2015-12-22 1 views
3

Fundamental difference between Hashing and Encryption algorithmsmanière correcte de stocker les mots de passe en PHP

Preferred Method of Storing Passwords In Database

http://codahale.com/how-to-safely-store-a-password/

Je suis confus au sujet de deux choses. Si PHP 7.0 bcrypt fournit un sel aléatoire. Comment sommes-nous censés le récupérer pour la vérification du mot de passe? Je comprends les fonctions d'étirement des touches comme PBKDF2 mais quelqu'un peut-il m'expliquer pourquoi un algorithme de hachage à mémoire intensive comme scrypt est préféré à quelque chose comme bcrypt? Outre l'aspect de l'attaque par force brute. De la logique que j'ai lu en ligne, les gens recommandent d'utiliser scrypt avec plusieurs itérations.

+0

jeter un coup d'oeil sur ce http://stackoverflow.com/questions/33108720/password-hash-returns-different-value/33109078#33109078 – Linus

+0

@Anmol merci, je ne sais pas pourquoi je ne pouvais pas trouver ce post. –

+0

pourquoi Scrypt n'est pas recommandé http://blog.ircmaxell.com/2014/03/why-i-dont-recommend-scrypt.html – Linus

Répondre

2

Première question sur bcrypt et le sel: le sel est contenu dans la chaîne de résultat ainsi que le coût , ainsi que la chaîne hachée. Chacune des trois chaînes a une longueur constante et peut donc être récupérée facilement par la suite. Pour une explication plus détaillée, voir this answer.


scrypt est une version plus récente de bcrypt qui nécessite plus de RAM pour fonctionner. La raison derrière les exigences de la RAM est que le cryptage basé sur le cycle CPU (E/S) est facilement forcé à l'aide d'un GPU moderne, plusieurs cœurs, etc RAM de l'autre côté n'est pas si facile à l'échelle, donc une combinaison de RAM + opérations multiples est théoriquement un moyen plus sûr.

En savoir plus à ce sujet dans this great answer.