[英]crypt module not outputting a SHA512 hash as expected
我目前正在使用 Python 中的 crypt 模块尝试以下列方式创建 SHA512 hash。
当我从这个SO 帖子运行以下代码行时:
>>> import crypt
>>> crypt.crypt('password', '$6$' + 'salt1234')
而不是看到以下盐的 output 后跟 SHA512 hash 每这个 SO 帖子:
'$6$salt1234$Zr07alHmuONZlfKILiGKKULQZaBG6Qmf5smHCNH35KnciTapZ7dItwaCv5SKZ1xH9ydG59SCgkdtsTqVWGhk81'
我得到以下信息:
$6FMi11BJFsAc
下面是截图为证:
为什么我无法获得我期待的 SHA512 hash?
从https://docs.python.org/3/library/crypt.html :
该模块实现了crypt(3)例程的接口,该例程是基于改进的 DES 算法的单向 hash function; 有关详细信息,请参阅 Unix 手册页。 […]
请注意,此模块的行为取决于运行系统中crypt(3)例程的实际实现。 因此,当前实现中可用的任何扩展也将在此模块上可用。
并从 function 本身的文档(强调我的):
可选的 salt 是从
mksalt()
返回的字符串,是crypt.METHOD_*
值之一(尽管并非所有平台都可用)
您所在平台的crypt
可能不支持 SHA-512。 您可以通过检查crypt.METHOD_SHA512
是否在crypt.methods
中来确认这一点。
>>> crypt.methods
[<crypt.METHOD_CRYPT>]
>>> "\N{CRYING FACE}"
'😢'
可以查看SHAcrypt 的描述并基于它进行实现,或者使用其他人的.
from passlib.hash import sha512_crypt
sha512_crypt.hash('password')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.