1

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 将密码存储在我的数据库中。

我搜索了它,但我无法得到确切的优点和缺点..

4

3 回答 3

14

这些都是不同的算法。其中一些是加密哈希,一些是简单的校验和(例如 crc32 和 adler32),计算速度非常快,但绝不应用于加密目的。

MD5 和 SHA-1 曾经是标准的加密散列,但最近在两者中都发现了弱点。出于加密目的,您可能最好使用较新的 SHA-256。其他新的 SHA 变体使用更少或更多的位,但没有根本不同。

您可能可以在 Wikipedia 上找到有关大多数这些算法的更多详细信息。

于 2010-06-28T10:42:10.740 回答
9

不同之处在于所使用的算法,它也决定了输出的大小(例如 md5 产生 128 位输出,sha 160 位)。

md5 和 sha1 具有已发现的弱点(哈希空间中的冲突),但对于大多数用途而言,除非您在银行网站上工作,否则 md5 就足够了。

但是,您必须使用盐(无论使用的哈希算法如何),例如,仅使用密码的 md5 会使您可能容易受到彩虹攻击。

编辑:这比 PHP 本身更像是一个加密问题

于 2010-06-28T10:41:50.493 回答
3

您不想使用 md5 或任何“简单”哈希将密码存储在数据库中。你想要一个好的 saltbcrypt。phpass库提供了一种很好的移植方式来实现不太弱的密码存储。

于 2010-06-28T12:21:16.883 回答