PHP Crypt()与Python';s Crypt()用于哈希

PHP Crypt()与Python';s Crypt()用于哈希,php,python,hash,crypt,Php,Python,Hash,Crypt,我正在比较PHP的crypt()和Python的crypt()。阅读Python手册: 平台:Unix 该模块实现了一个与crypt(3)例程的接口,即 基于改进DES算法的单向散列函数;见 有关更多详细信息,请参阅Unix手册页。可能的用途包括允许 Python脚本接受用户输入的密码,或尝试 使用字典破解Unix密码 请注意,此模块的行为取决于实际的 在运行系统中实现crypt(3)例程。 因此,当前实现上可用的任何扩展都将 也可在此模块上使用 crypt(word,salt)字通常是用户的

我正在比较PHP的crypt()和Python的crypt()。阅读Python手册:

平台:Unix

该模块实现了一个与crypt(3)例程的接口,即 基于改进DES算法的单向散列函数;见 有关更多详细信息,请参阅Unix手册页。可能的用途包括允许 Python脚本接受用户输入的密码,或尝试 使用字典破解Unix密码

请注意,此模块的行为取决于实际的 在运行系统中实现crypt(3)例程。 因此,当前实现上可用的任何扩展都将 也可在此模块上使用

crypt(word,salt)字通常是用户的密码 在提示或图形界面中键入。盐通常是一种食物 用于干扰DES的随机双字符串 4096种方法之一的算法。salt中的字符必须在 套件[/a-zA-Z0-9]。以字符串形式返回哈希密码,该字符串将 由与盐(盐)相同的字母表中的字符组成 前两个字符代表盐本身)

阅读PHP的Crypt:

CRYPT_SHA512-SHA-512哈希,带有16个字符的salt,前缀为$6$。如果salt字符串以“rounds=$”开头,则数字 N值用于指示散列循环应执行的次数 可以执行,很像河豚上的成本参数。默认值 轮数为5000,最少1000轮,最多1000轮 999,999,999. 此范围之外的任何N选择都将被截断 到最近的极限

公平地说,我没有包括Python的第三方模块……我想比较一下PHP crypt()和Python crypt()这两个模块


在阅读了这两篇文章并进行比较之后。。。。它看起来像是使用SHA512的PHP Crypt(),它的最大哈希循环数为99999999,远远强于Python的Crypt()。确认了吗?还是我读错了

Python的
crypt()
是用于密码哈希的UNIX等价物的代理;其中,as PHP是通用加密服务提供商;对于哪个Python具有

注意,Python
crypto
只是
crypt(3)
调用的包装器,您提到的文档指的是基础POSIX版本,可以在任何地方找到。正如文档所述,
crypto
的大多数实现在此基础上进一步扩展:

请注意,此模块的行为取决于正在运行的系统中crypt(3)例程的实际实现。因此,当前实现上可用的任何扩展也将在此模块上可用

如果您查看(这是绝大多数Linux系统所使用的),您会发现PHP文档中列出的所有算法都已实现。另外,请查看是否支持迭代(轮数)参数


您的问题中的PHP文档列出了所有算法,因此作者要么想当然地认为它将安装在具有最新glibc的系统上,要么他们设法在所有系统上模拟缺少的算法。

hashlib模块是否提供了像PHP的Crypt()那样进行哈希循环的选项?或者说,它的大小弥补了它?如果是的话…哪一个更好…能够设置轮次或摘要大小?但我唯一的问题是,加密是由第三方制作的第三方模块。因为我们谈论的是安全性,所以我必须依赖模块的维护人员诚实,没有任何恶意代码。什么是第三方库?只要坚持使用信誉良好、经过同行评审的开源软件,你就可以了。是的,
crypt.crypt(给定,保存)=保存的
满足了我的需要。老实说,在我的情况下,它有点复杂:def password_match(saved,given):phash=(saved[:1]='$)\和crypt(given,saved)\or sha1(given)。hexdigest()return saved==phashWay太难看了。不能再编辑了
password\u match=lambda(已保存,给定:已保存==((已保存[:1]='$')和crypt(给定,已保存)或sha1(给定).hexdigest())
很抱歉无法使其看起来像python代码:(