crypt模块未按预期输出SHA512哈希

问题描述 投票:0回答:1

我目前正在使用Python中的crypt模块,尝试通过以下方式创建SHA512哈希。

当我从此SO post运行下面的代码行时:

>>> import crypt
>>> crypt.crypt('password', '$6$' + 'salt1234')

而不是看到以下盐输出,然后是每个this SO post的SHA512哈希:

'$6$salt1234$Zr07alHmuONZlfKILiGKKULQZaBG6Qmf5smHCNH35KnciTapZ7dItwaCv5SKZ1xH9ydG59SCgkdtsTqVWGhk81'

我得到以下内容:

$6FMi11BJFsAc

下面是截图作为证明:

enter image description here

为什么我无法获得期望的SHA512哈希?

python security hash sha crypt
1个回答
1
投票

来自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')
© www.soinside.com 2019 - 2024. All rights reserved.