使用python pbkdf2_hmac-sha256+;盐不一样

使用python pbkdf2_hmac-sha256+;盐不一样,python,sha256,Python,Sha256,对于我参加的一个加密课程,我们的任务是制作一个程序来检查密码,如果计算机知道以下定义的信息。老师给了我们一套固定的信息 我正在尝试编写一个python代码,根据已知的和固定的 摘要方法:HMAC-SHA256 轮数:100000 盐:“e65814e4382759f85550029e723dc7e7” 密码:“调速器冲洗嘴” 输出导出的“5f37a3bd08ac1c7d163294a3cb192ed1407b62bbc6a6259fee55f6e53f754273” 这是我的代码生成的派生检查对

对于我参加的一个加密课程,我们的任务是制作一个程序来检查密码,如果计算机知道以下定义的信息。老师给了我们一套固定的信息

我正在尝试编写一个python代码,根据已知的和固定的

摘要方法:HMAC-SHA256

轮数:100000

盐:“e65814e4382759f85550029e723dc7e7”

密码:“调速器冲洗嘴”

输出导出的“5f37a3bd08ac1c7d163294a3cb192ed1407b62bbc6a6259fee55f6e53f754273”

这是我的代码生成的派生检查对上述派生

key = hashlib.pbkdf2_hmac('sha256', b'governor washout beak', b'e65814e4382759f85550029e723dc7e7', 100000, dklen=32)
print(binascii.hexlify(key))
但是我得到“0ce7d2e654c0ba80e67348c9610ca1851312458166ee8c9e6d4666832a21b11”
相反我不明白缺少了什么。

错误是代码从ascii>>二进制文件而不是十六进制>>二进制文件中获取salt,所以 您要使用binascii模块:

import binascii

hexstr = 'e65814e4382759f85550029e723dc7e7'

binascii.unhexlify(hexstr)

b"\xe6X\x14\xe48'Y\xf8UP\x02\x9er=\xc7\xe7"

在python 3中,可以编写如下内容:

hexstr = 'e65814e4382759f85550029e723dc7e7'
pbkdf2_hmac_key = hashlib.pbkdf2_hmac('sha256', b'governor washout beak', bytes.fromhex(hexstr), 100000, dklen=32)
print(pbkdf2_hmac_key.hex())
# 5f37a3bd08ac1c7d163294a3cb192ed1407b62bbc6a6259fee55f6e53f754273

你的盐不一样吗?b'e65814e4382759f85550029e723dc7e7'=“5ED20A9710CDC0278CBB345C5A4AC3D”谢谢,我在我的帖子中错误地使用了不同的示例集,但在我的代码和输出中是相同的。所以这不是问题所在。