Diskuze: Ktorú hashovaciu funkciu použiť?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
sha256 este nejaky cas tu bude, myslim, ze ani blowfish nebol
prelomeny...
takisto treba aby si pouzival dostatocne dlhy kluc (256-tkovy by som v ziadnom
pripade nepouzil, radsej 2048-tkovy) a este treba danu sifru aj osolit...
a co sa tyka dlzky kluca, tak tu treba ratat s tym, ze vypocet hashu je narocnejsie v zavislosti od dlzky daneho kluca a od algoritmu
u mňa je to hash(); a algoritmus sha512 ktorý generuje 128-znakový string
uvediem príklad
public function getHash($string){
return hash("sha512", $string . "solJodidovana158#@?");
}
niektorí robia tak, že každý užívateľ má ešte inú soľ, a videl som
aj funkciu crypt() a bitový posun stringu na bežné veci ale postačí to
čo som uviedol ako príklad, teda aspoň myslím
No, prolomená šifra... U toho MD5 došlo k tomu, že se našlo pár kolizí
- což vadí hlavně u digitálního podepisování, u schovávání hesel to
zas takový problém není. Ale i přesto se moc nedoporučuje tuto funkci
používat.
<i>(Mimochodem, šifru lze zpětně dekódovat, my se ale bavíme o
hashování, tam je to jen jednosměrné.)</i>
U SHA1 je problém v rychlosti - je moc rychlá, proto se tabulka hashů dá vytvořit relativně snadno.
Z pomalých hashovacích funkcí zmíním třeba Bcrypt (nejdostupnější),
kterou PHP používá ve funkcích password_hash() a crypt().
http://php.net/…assword_hash
http://php.net/function.crypt
Bacha na to, že password_hash() je dostupný až od PHP 5.5, takže někde to nemusí fungovat (nutno zjistit na hostingu).
Stejnou otázkou jsem se před nedávnem také zabýval a vybral jsem si crypt().
V PHP jsou od 5.5 nějaké nové fce. md5, sha1 i sha256 na hesla dnes již nestačí. Více info zde - http://php.net/…asswords.php
Hash jako takový vůbec původně nesloužil k ukládání hesel. Jednalo se spíže o převedení vstupních dat do kontrolního součtu/čísla, které je právě hash.
Většina hashů jsou prolomena tím způsobem, že na netu jsou databáze hashů a v kolika případech když dáte strejdovi(google) hash tak vám najde hned první výsledek, který řekne co se to pod tím hashem vlastně skrývá.
Když šifrovat hesla tak funkcí, která je k tomu určená (password_hash -> http://php.net/…ord-hash.php)
Neaktivní uživatel Nesouhlasím, sha512 ani k tomu není původně vůbec navržena.
Lava Použi funkci password_hash, s algoritmem
bcrypt (PASSWORD_BCRYPT) a cost parametrem nejméně 12.
Salt v tomto případě nemusíš vůbec řešit, tato funkce si ji pro
každého uživatele vytvoří sama. Nejlepší je vygenerovat sůl tím co ví
jak na to..
Ja osobne používam md5 týmto štýlom.
md5(md5($_POST['password']))
No tak toto už je naozaj metal
A keď niekto prelomí, tak potom použiješ
md5(md5(md5($_POST["password"])))?
Tím, že zacyklíš ten hash tak ho nezpomalíš spíže zhoršíš/poškodíš ten algoritmus. Toto je největší hloupost, opravdu toto nepoužívat. MD5 vůbec nepoužívat ve spojení s heslem, vůbec k tomu není určený ani..
lol fun, nebrať
si príklad!
md5(sha1(password))
md5(md5(salt) + md5(password))
sha1(sha1(password))
sha1(str_rot13(password + salt))
md5(sha1(md5(md5(password) + sha1(password)) + md5(password)))
sha512 síce nie je priamo hashovacia funkcia na heslá ale nie každý server má PHP 5.5 a vyššie.
Tak stále můžeš použít crypt, ten podporuje také
šifrování pomocí Blowfishe.
Pořád to je pomalejší než sha512.
Zobrazeno 14 zpráv z 14.