【发布时间】:2013-05-05 22:40:41
【问题描述】:
我正在比较 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 通常是用户的密码 在提示符或图形界面中键入。盐通常是 用于扰动 DES 的随机两个字符的字符串 4096 种方法之一的算法。 salt 中的字符必须在 设置 [./a-zA-Z0-9]。将哈希密码作为字符串返回,这将 由与盐相同的字母组成的字符( 前两个字符代表盐本身)。
通过阅读 PHP 的 Crypt:
http://php.net/manual/en/function.crypt.php
CRYPT_SHA512 - SHA-512 哈希,带有 16 个字符的盐,前缀为 $6$。如果盐字符串以 'rounds=$' 开头,则数字 N 的值用于指示散列循环应该执行多少次 执行,很像 Blowfish 上的成本参数。默认 轮数为 5000,最少 1000,最多 999,999,999。超出此范围的任何 N 选择都将被截断 到最近的限制。
公平地说,我不包括 Python 的第三方模块...我想比较 PHP crypt() 和 Python crypt() 两者的股票。
在阅读了这两篇文章并进行了比较之后......看起来 PHP Crypt() 使用了 SHA512,并且它的最大 999,999,999 散列轮数远远强于/优于 Python 的 Crypt()。这得到证实了吗?或者我没有正确阅读这个。
【问题讨论】: