我想知道PHP的crypt()
函数是否有一个python同源项,它以类似的方式执行,生成一个随机salt并将其嵌入保存的字符串中。在
我有一个哈希密码表,这些密码是使用$5$
字符串密钥创建的,用于设置基于SHA256的salt密码。这些散列以固定的间隔在两端附加了一些额外的记录熵,但是将这些字符从字符串中分离出来并获得核心哈希值是很简单的,根本不是问题。在
我看过python文档,在hashlib
中找不到任何似乎使用php的crypt()
语法的方法。PHP中使用的方法(在salt、algo和rounds之间用美元符号分隔的输入格式)是否是该语言独有的?在
谢谢。在
编辑:
看起来,python自己的本机crypt
函数的修订版将使用与PHP类似的过程。从3.3预发布文档:
http://docs.python.org/dev/library/crypt.html
编辑:
最后找到了Passlib,一个用纯python提供此功能的库。在
我意识到这个问题很古老,但是我在尝试用Python实现一个最初用PHP编写的登录算法时发现了这个问题。PHP中的crypt函数使用一些不安全的DES算法,包括bcrypt。这取决于你用什么杂凑字符串。Passlib几乎是复制应用程序当前从phpcrypt获得的功能的最佳选择。取一个哈希密码,看看字符串的前面。您应该看到类似$2a$、$3$、$6$(或类似的)的内容。请注意,如果此字符串不存在,则很可能使用标准DES哈希。在
把这些信息带到这个链接:
http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers
然后,将其与需要在Python中实现的算法相匹配。方案标识符是指向与哈希算法相关的passlib文档的链接。在这一点上,你应该拥有完成重新实现所需的所有信息。在
它看起来确实非常类似于FreeBSD's crypt(请参阅手册页中的“模块化密码”)。我不太记得在Linux或其他系统中是不是同样的方式,但这似乎表明它不是唯一的。在
据我所知,在Python中没有直接的等价物,但是要实现自己的目标应该不会太困难,因为加密算法本身应该在
hashlib
中得到支持。在相关问题 更多 >
编程相关推荐