从php的crypt()到python的移植哈希斯
题
我想知道是否有python cognate to php的 crypt()
以类似方式执行的功能,生成随机盐并将其嵌入保存的字符串中。
我有一张使用的密码表 $5$
设置基于SHA256的咸密码图的字符串键。这些哈希在两端都以固定的间隔附加了一些附加的记录熵,但是将这些字符从字符串上拆分并获得核心哈希是微不足道的,根本不是问题。
我已经查看了Python文档,在 hashlib
这似乎利用了PHP的同一语法 crypt()
. 。该语言独有的PHP中使用的方法是否在PHP(输入格式拆分,盐,Algo和圆圈之间具有美元标志)?
谢谢。
编辑:
看起来好像是Python自己的本地的修订版 crypt
功能将利用类似于PHP的过程。从3.3预发行文档:
http://docs.python.org/dev/library/crypt.html
编辑:
最终找到了Passlib,这是一个在Pure Python中提供此功能的库。
解决方案
当然看起来与 FreeBSD的地下室 (请参阅Manpage中的“模块化地crypt”)。我真的不记得这在Linux还是其他方式中是相同的,但这似乎表明它不是唯一的。
据我所知 hashlib
.
其他提示
我意识到这个问题是旧的,但是当我试图在Python中实现最初用PHP编写的Python的登录算法时,我发现了它。 PHP中的隐窝函数使用了包括BCRypt在内的少数几个不安全的算法。这取决于您使用的字符串。 Passlib几乎是复制您当前从PHP Crypt获得的功能的最佳选择。拿一份您的哈希密码,然后查看字符串的正面。您应该看到$ 2A $,$ 3 $,$ 6 $(或类似)之类的东西。请注意,如果该字符串不存在,则您很有可能使用标准DES HASHISHING。
将该信息带到此链接:
http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-isentifiers
然后,将其匹配到您需要在Python中实现的算法。该方案标识符是有关该哈希算法的Passlib文档的链接。在这一点上,您应该拥有完成重新实现的所有信息。