我正在比较 PHP 的 crypt() 和 Python 的 crypt()。从阅读 Python 的手册:
http://docs.python.org/2/library/crypt.html
平台:Unix
该模块实现了 crypt(3) 例程的接口,该例程是基于改进的 DES 算法的单向散列函数;有关详细信息,请参阅 Unix 手册页。可能的用途包括允许 Python 脚本接受用户输入的密码,或尝试用字典破解 Unix 密码。
请注意,此模块的行为取决于运行系统中 crypt(3) 例程的实际实现。因此,当前实现中可用的任何扩展也将在此模块上可用。
crypt.crypt(word, salt) word 通常是用户在提示符或图形界面中输入的密码。salt 通常是一个随机的两个字符的字符串,它将用于以 4096 种方式之一扰乱 DES 算法。salt 中的字符必须在集合 [./a-zA-Z0-9] 中。以字符串形式返回散列密码,该字符串由与 salt 相同的字母组成的字符(前两个字符代表 salt 本身)。
通过阅读 PHP 的 Crypt:
http://php.net/manual/en/function.crypt.php
CRYPT_SHA512 - SHA-512 哈希,带有 16 个字符的盐,前缀为 $6$。如果 salt 字符串以 'rounds=$' 开头,则 N 的数值用于指示应该执行多少次散列循环,很像 Blowfish 上的成本参数。默认轮数为 5000,最小为 1000,最大为 999,999,999。超出此范围的任何 N 选择都将被截断到最近的限制。
公平地说,我不包括 Python 的第三方模块......我想比较 PHP crypt() 和 Python crypt() 两者的股票。
在阅读了这两篇文章并进行了比较之后……看起来 PHP Crypt() 使用了 SHA512,它的最大 999,999,999 次散列轮次比 Python 的 Crypt() 强得多/优越得多。这得到证实了吗?或者我没有正确阅读这个。