为啥 PHP crypt 函数使用 DES 加密算法?
Posted
技术标签:
【中文标题】为啥 PHP crypt 函数使用 DES 加密算法?【英文标题】:Why does PHP crypt function use DES encryption algorithm?为什么 PHP crypt 函数使用 DES 加密算法? 【发布时间】:2014-03-09 20:21:29 【问题描述】:鉴于经验法则是存储密码字符串的加盐哈希,而不是加密形式,为什么 php crypt()
函数使用基于 DES 的算法? DES不是加密算法吗?说明书上说
... crypt() 将使用基于标准 Unix DES 的算法或系统上可能可用的替代算法返回一个散列字符串...
我从这里了解到的是crypt()
只使用系统实现的算法。当然,DES 是作为加密算法实现的,而不是用于 crypt 的自定义散列算法。
PS - 我知道 DES 早在过去,没有人应该再使用它了。
【问题讨论】:
这个问题似乎离题了,因为它是关于为什么 php 的作者选择像他们那样编写函数的原因。 是的,DES 是一种加密算法。但 Blowfish 也是如此,它是 bcrypt 的基础!不过,在不小心给你错误信息之前,我要弄清楚事物是如何相互反馈的,以使它们成为哈希算法。 @Dagon:这是一个非常有效的问题。你的亲密理由没有任何意义。 【参考方案1】:基于 DES 的密码散列的想法基本上是用密码加密一个零块,并在一定轮数内传递盐。即使面对已知的明文,任何半体面的加密都会使密钥恢复变得困难,这就是为什么可以从加密函数中生成强密码散列的原因。
我认为 PHP 默认与this scheme 兼容。
【讨论】:
以上是关于为啥 PHP crypt 函数使用 DES 加密算法?的主要内容,如果未能解决你的问题,请参考以下文章
升级使用无效 CRYPT_STD_DES 盐生成的 PHP(<5.3.2)密码 [关闭]