3

我想知道是否有一个与 PHPcrypt()函数类似的 python 同源,它以类似的方式执行,生成随机盐并将其嵌入到保存的字符串中。

我有一个哈希密码表,这些密码是使用$5$字符串键创建的,用于设置基于 SHA256 的加盐密码。这些散列在两端以固定的间隔附加了一些额外的记录熵,但是将这些字符从字符串中分离出来并获得核心散列是微不足道的,根本不是问题。

我查看了 python 文档,找不到任何hashlib似乎使用与 php 相同语法的方法crypt()。PHP 中使用的方法(输入格式在 salt、algo 和 rounds 之间用美元符号分割)是该语言独有的吗?

谢谢。

编辑:

看起来python自己的nativecrypt函数的修改版本将使用类似于PHP的过程。从 3.3 预发布文档:

http://docs.python.org/dev/library/crypt.html

编辑

终于找到了Passlib,一个在纯python中提供这个功能的库。

http://packages.python.org/passlib/index.html

4

2 回答 2

2

我意识到这个问题很老,但是我在尝试用 Python 实现最初用 PHP 编写的登录算法时发现了它。PHP 中的 crypt 函数使用了一些不安全的 DES 算法中的任何一种,包括 bcrypt。这取决于你用什么散列你的字符串。Passlib 几乎是复制应用程序当前从 PHP crypt 获得的功能的最佳选择。取一个散列密码,然后查看字符串的前面。您应该会看到类似 $2a$、$3$、$6$(或类似)的信息。请注意,如果此字符串不存在,您很可能使用标准 DES 散列。

将该信息带到此链接:

http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers

Then, match it up to the algorithm you need to implement in Python. The Scheme identifiers are links to the passlib documentation regarding that hashing algorithm. At this point, you should have all the info you need to complete your reimplementation.

于 2013-12-03T23:12:03.273 回答
1

它看起来确实与FreeBSD 的 crypt非常相似(参见手册页中的“modular crypt”)。我真的不记得它在 Linux 或其他系统中是否相同,但这似乎表明它不是唯一的。

据我所知,Python 中没有直接的等价物,但推出自己的加密算法应该不会太难,因为hashlib.

于 2011-11-28T22:52:13.787 回答