它们生成的编码长度不同。
crc32() 生成32位代码
sha1() 生成128位代码
md5() 生成160位代码
这是正确的吗?还是它们之间有更多的区别?
它们生成的编码长度不同。
crc32() 生成32位代码
sha1() 生成128位代码
md5() 生成160位代码
这是正确的吗?还是它们之间有更多的区别?
顺便提一句:请不要在任何真正的加密工作中(例如哈希密码)使用md5或sha1。它们都存在严重缺陷(只需问问evernote或其他因使用这种旧算法而被烧毁的公司)。相反,请使用php crypt()函数并使用SHA-256或SHA-512(比256更好),或者blowfish。并且始终对您的哈希进行盐处理...。
BCrypt
或PBKDF2
。它们具有可调节的成本因素,可以随着未来硬件的增长而增加。 - martinstoecklicrc32 会生成“str的crc32校验和整数”。它的预期用途是快速验证某些内容的完整性,广泛用于检测意外更改,例如网络传输错误。
最好阅读php文档,其中包含示例:
一个为什么常见的哈希函数如md5()和sha1()不适合用于密码? MD5、SHA1和SHA256等哈希算法旨在非常快速和高效。通过现代技术和计算机设备,已经变得轻而易举地“暴力破解”这些算法的输出,以确定原始输入。
md5
是128位的,而一个 sha1
是160位的。问题中这个相反了。
md5
和 sha1
的一个主要区别是还没有发现 sha1
碰撞的例子。也就是说,如果您使用 md5
用于两个不同的输入,可能会得到相同的哈希值;而使用 sha1
则不可能。除此之外,它们实现了不同的算法,但是,例如,它们都不适合存储密码,尽管通常用于这样做。这些被称为哈希函数。
http://en.wikipedia.org/wiki/Hash_function - 解释了不同类型的哈希函数
它们在内部完全不同。
注意:不要将crc32
用于加密目的。它的使用是为了快速哈希,与sha1
或md5
相比,它不太安全。
主要的区别在于生成的哈希长度不同。
CRC32 is, evidently, 32 bits,
sha1() returns a 128 bit value,
and md5() returns a 160 bit value.
在避免碰撞时非常重要。