为啥 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 加密算法?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用php进行3des解密

升级使用无效 CRYPT_STD_DES 盐生成的 PHP(<5.3.2)密码 [关闭]

如何在 NODE.JS 上模拟 php crypt()

PHP 3DES 加解密(CBC模式,pkcs5padding填充)

对称加密DES加密

介绍几个PHP 自带的加密解密函数