我目前正在使用Python中的crypt模块,尝试通过以下方式创建SHA512哈希。
当我从此SO post运行下面的代码行时:
>>> import crypt
>>> crypt.crypt('password', '$6$' + 'salt1234')
而不是看到以下盐输出,然后是每个this SO post的SHA512哈希:
'$6$salt1234$Zr07alHmuONZlfKILiGKKULQZaBG6Qmf5smHCNH35KnciTapZ7dItwaCv5SKZ1xH9ydG59SCgkdtsTqVWGhk81'
我得到以下内容:
$6FMi11BJFsAc
下面是截图作为证明:
为什么我无法获得期望的SHA512哈希?
来自https://docs.python.org/3/library/crypt.html:
此模块实现了crypt(3)例程的接口,该例程是基于修改后的DES算法的单向哈希函数;有关更多详细信息,请参见Unix手册页。 […]
注意,此模块的行为取决于运行系统中crypt(3)例程的实际实现。因此,当前实现上可用的任何扩展也将在此模块上可用。
和from the documentation of the function itself(重点为我:):
可选的盐是从
mksalt()
返回的字符串,是crypt.METHOD_*
值之一(尽管并非所有平台上都可能有全部可用]
您所在平台的crypt
可能不支持SHA-512。您可以通过检查crypt.METHOD_SHA512
是否在crypt.methods
中来确认。
>>> crypt.methods [<crypt.METHOD_CRYPT>] >>> "\N{CRYING FACE}" '😢'
[一个人可以看a description of SHAcrypt并基于它或use someone else’s进行实现。
from passlib.hash import sha512_crypt
sha512_crypt.hash('password')