Какова разница между методами хеширования php? - PullRequest
1 голос
/ 28 июня 2010

В чем разница между методами хеширования, доступными в php

md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 
ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,
4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 
haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,
4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,
5 haval224,5 haval256

Я обычно использую md5 для хранения паролей в моей базе данных.

Я искал его, но не смогполучить точные преимущества и недостатки ..

Ответы [ 3 ]

14 голосов
/ 28 июня 2010

Это все разные алгоритмы. Некоторые из них являются криптографическими хэшами, некоторые - простыми контрольными суммами (такими как crc32 и adler32), которые очень быстро вычисляются, но никогда не должны использоваться в криптографических целях.

MD5 и SHA-1 были стандартными криптографическими хэшами, но в последнее время были обнаружены недостатки в обоих. Возможно, вам лучше использовать более новый SHA-256 для криптографических целей. Другие новые варианты SHA используют меньше или больше битов, но принципиально не отличаются.

Возможно, вы найдете более подробную информацию о большинстве этих алгоритмов в Википедии.

9 голосов
/ 28 июня 2010

Различия - в используемом алгоритме, который также определяет размер вывода (например, md5 производит 128-битный вывод, ша 160 бит).

md5 и sha1 имеют обнаруженные слабости (столкновения в хэш-пространстве), хотя для большинства целей md5 достаточно, если вы не работаете на банковском сайте.

Однако вы ДОЛЖНЫ использовать соль (независимо от используемого алгоритма хеширования), например, использование только md5 пароля оставляет вас потенциально уязвимыми для атаки радуги.

Редактировать: Это больше крипто вопрос, чем PHP как таковой

3 голосов
/ 28 июня 2010

Вы не хотите использовать md5 или любой «простой» хеш для хранения паролей в базе данных. Вы хотите хорошую соль и bcrypt . Библиотека phpass обеспечивает хороший переносимый способ реализовать не слишком слабое хранилище паролей.

...