鉴于经验法则是存储密码字符串的盐渍哈希,而不是密码字符串的加密形式,为什么PHP crypt()
函数使用基于DES的算法? DES不是加密算法吗?手册说
... crypt()将使用标准的基于Unix DES的算法或系统上可用的替代算法返回散列字符串......
我从这里了解到crypt()
仅使用系统实现的算法。当然,DES是作为加密算法实现的,而不是用于crypt的自定义散列算法。
答案 0 :(得分:3)
基于DES的密码散列的想法基本上是用密码加密一个零块并传递盐进行一定数量的循环。即使面对已知的明文,任何半合适的加密都会使密钥恢复变得困难,这就是为什么可以用加密函数来强制密码哈希的原因。
我认为 PHP默认与this scheme兼容。