OpenSSL与Python hashlib不匹配

2024-06-26 13:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我对使用OpenSSL库还不太熟悉,我无法获得与python加密库的输出相匹配的输出。下面是一个例子。在

Python代码:

import hmac

secret = "asdf1234"
string = '{"request"}'

hmac.new(secret, string, hashlib.sha384).hexdigest()
    '92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02'

OpenSSl:

^{pr2}$

我做错什么了?这两个实现是否正确?在


Tags: 代码importnewsecretstringrequesthmac例子
1条回答
网友
1楼 · 发布于 2024-06-26 13:42:03

为了匹配openssl输出,Python字符串应该是'{request}',而不是'{"request"}'。在

import hmac
import hashlib
secret = "asdf1234"
string = '{request}'

hmac.new(secret, string, hashlib.sha384).hexdigest()

收益率

^{pr2}$

或者,如果希望openssl命令与Python输出匹配,请使用

echo -n '{"request"}' | openssl dgst -sha384 -hmac asdf1234 -hex

它产生了

(stdin)= 92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02

毕竟,输入必须匹配,输出才有机会匹配:

% echo -n {"request"}
{request}

以及

>>> print('{"request"}')
{"request"}

相关问题 更多 >