Diskuze: Ktorú hashovaciu funkciu použiť?

PHP PHP Ktorú hashovaciu funkciu použiť? American English version English version

Avatar
Mego
Člen
Avatar
Mego:

Doteraz som používal md5, ale údajne je to už prelomená šifra. Čo používate vy? Ja rozmýšľam nad sha1. Treba mi poprerábať nejaké systémy, tak sa radšej spýtam teraz ;)

Odpovědět 10.2.2015 14:14
Radšej 15 minút skôr, ako 15 sekúnd neskoro...
Avatar
mkub
Redaktor
Avatar
Odpovídá na Mego
mkub:

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

 
Nahoru Odpovědět 10.2.2015 14:21
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Mego
Matúš Petrofčík:

u mňa je to hash(); a algoritmus sha512 ktorý generuje 128-znakový string

uvediem príklad :D

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 :D

Nahoru Odpovědět  +1 10.2.2015 14:24
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Mego
Tonda Kozák:

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.
(Mimochodem, šifru lze zpětně dekódovat, my se ale bavíme o hashování, tam je to jen jednosměrné.)

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().

 
Nahoru Odpovědět 10.2.2015 14:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Mego
David Čápka:

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

Nahoru Odpovědět 10.2.2015 14:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Mego
Samuel Illo :

Sha512 je najlepšie šifrovanie v PHP

Nahoru Odpovědět  ±0 10.2.2015 15:08
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

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)

Samuel Illo Nesouhlasím, sha512 ani k tomu není původně vůbec navržena.

Mego 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..

Nahoru Odpovědět  +1 10.2.2015 16:28
Chybami se člověk učí, běžte se učit jinam!
Avatar
Dominik Gavrecký:

Ja osobne používam md5 týmto štýlom.

md5(md5($_POST['password']))
Nahoru Odpovědět  -7 10.2.2015 16:44
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Mego
Člen
Avatar
Odpovídá na Dominik Gavrecký
Mego:

No tak toto už je naozaj metal :D

A keď niekto prelomí, tak potom použiješ

md5(md5(md5($_POST["password"])))?
Nahoru Odpovědět  +3 10.2.2015 17:03
Radšej 15 minút skôr, ako 15 sekúnd neskoro...
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

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..

Nahoru Odpovědět  +2 10.2.2015 17:20
Chybami se člověk učí, běžte se učit jinam!
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Mego
Matúš Petrofčík:

lol :D 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)))
Nahoru Odpovědět 10.2.2015 17:32
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Z.
Redaktor
Avatar
Nahoru Odpovědět 10.2.2015 17:44
Chybami se člověk učí, běžte se učit jinam!
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Marek Z.
Samuel Illo :

sha512 síce nie je priamo hashovacia funkcia na heslá ale nie každý server má PHP 5.5 a vyššie.

Nahoru Odpovědět 10.2.2015 18:18
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Samuel Illo
Marek Z.:

Tak stále můžeš použít crypt, ten podporuje také šifrování pomocí Blowfishe.
Pořád to je pomalejší než sha512.

Nahoru Odpovědět  +1 10.2.2015 18:28
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.