Titkosítási függvvények php-ben?
Most a base64-et használom, de szeretnék valamim "erősebbet". Tudtok ajánlani valamit (ha hasonló lenne a használata, mint a base64-é, az külön jó lenne)?
Köszönöm!





A base64 az nem titkosít o.O
Olyat akarsz amit vissza lehet alakítani? A base64 olyan, de semmi titkosító jellemvonása nincs, arra alkalmatlan.
Blowfishnek nézz utána még, ha hashelni akarsz (nem visszaalakítható dolgokat generálni) akkor SHA és társai, bcrypt meg ilyenek, + esetleg SALT mellé, nézz utána annak is.










Az alap php-s mcrypt titkosítási függvények használatával (kis base64-gyel és salt-tal fűszerezve) elég jó titkosítási eljárások írhatók.
Ahol szükség volt ilyesmire ott én saját eljárásokat használtam 128bites kódolással (RIJNDAEL 128). Sajnos megnöveli a tárolt adat méretét kb 30-35%-kal és a visszafejtés is plusz művelet, de ha muszáj, akkor muszáj.





Két esetben lehet szükség titkosításra.
Az egyik esetben vissza kell tudnod alakítani a titkosított adatokat az eredeti adatokra. Pl. ilyen eset, hogy ha valaki feltölt egy fájlt, és megad egy jelszót, akkor titkosítva tudod tárolni az adatokat. Viszont ilyen esetben a helyes jelszó megadásával vissza kell tudnod adni az eredeti adatokat, a fájl tartalmát. Erre a mcrypt alkalmas úgy alapból, de lehet ennél erősebb algoritmusokat is használni.
A másik eset, mikor nem kell visszaalakítanod az edeti adatsort, csak ellenőrni kell, hogy az azonos-e a felhasználó által megadott adatsorral. Tipikusan ilyen a jelszó tárolása. Neked nem kell tudnod visszaalakítani az adatbázisban tárolt titkosított jelszót az eredetire. A felhasználó megad egy jelszót, neked csak azt kell ellenőrizni, hogy az megegyezik-e a generáláskor megadott jelszóval. Kicsit szemléletesebb, de sántító példa. Pl. a jelszó két számjegy. Ekkor te mondjuk le tudod tárolni a számjegyek összegét. Az összegből természetesen nem fogod megmondani, hogy az melyik két számjegy összegeként áll elő, de ha valaki megad két számot, akkor össze tudod adni őket, és meg tudod mondani, hogy az összeg megegyezik-e a generáláskor az adatbázisba írt összeggel. A példa azért sántít természetesen, mert egy összeg esetén könnyen lehet adni két olyan számot, aminek az összege pont annyi, amennyinek lennie kell.
De vannak ennél jóval cizelláltabb eljárások, az un. hash algoritmusok. Mondjuk ilyen az md5, vagy a korszerűbb sha algoritmusok. Itt a hash értékéből nagyon nehéz egy olyan szöveget – jelszót – találni, aminek a hash értéke pont annyi, mint ami az adatbázisban van. Itt persze vannak trükkök, érdemes nagyon utánaolvasni a témának – salt, stb….
De ezek is problémásak, ugyanis ezek általános hash algoritmusok, amik a sebességre vannak kihegyezve. Mert pl. lehet őket használni egy fájl ellenőrző összegeként, és akkor tényleg fontos, hogy a hash algoritmus elemi, egy vagy fél órajeles utasításokat használjon, párhuzamosítható legyen az algoritmus, mert egy több gigabájtos fájl ellenőrző összegének kiszámításánál nem akarunk órákat várni.
De a jelszónál ez pont hátrány, hiszen minél gyorsabb az algoritmus, annál több jelszót lehet végigpróbálni ugyanannyi idő alatt. Tehát a jelszótárolásnál jobban járnánk egy lassú, nem párhuzamosítható, célhardverrel – pl. gyorsított videókártya – sem gyorsítható algoritmussal. Vannak ilyen algoritmusok, pl. a bcrypt. A PHP 5.5 óta része is a PHP-nek. Magától sóz, de lehet használni saját sózási eljárást is. Testre lehet szabni, hogy mennyire legyen gyors az algoritmus. Lásd: [link]
Ha 5.5-ös, vagy újabb PHP-t tudsz használni, akkor ez a legjobb – és egyben az egyik legegyszerűbb – módja a jelszavak titkosításának, ellenőrzésének.
Az egyik oldalon amit csinálok, felmerült az adatbázis biztonsági mentése közvetlenül az admin felületről a tárhelyre és valamelyik felhőre.
Ezért van szükségem a titkosítsa.





2xSü: az első titkosítás(crypting), a második (le)kódolás (coding, hash, md5, sha1,...). De egyébként egyetértünk.
Kérdező: az adatbázis dump készítése nem feltétlenül vonzza magával a titkosítást, de persze ha muszáj... :)
Az eljáráshoz az mcrypt függvényt javaslom. Megfelelő salt és password használatával.
Itt van egy jó példa arra, hogyan lehet jól használni az mcryptet, én is hasonlót használok:
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!