python hex hmac md5的密码与javascript不匹配

spi*_*dee 2 python

我有一个 javascript 密码编码器

md5 = hex_hmac_md5(秘密,密码)

我如何在 python 中模拟这个 - 我试过 md5 但这不是相同的值

我从这个网站得到了我的 md5 javascript 代码:

帕杰斯之家

(md5.js)

他说用途如下:

在散列的许多用途中,您最终希望将一个键与一些数据结合起来。通过简单的串联来做到这一点还不错,但 HMAC 是专门为此用途设计的。用法是:

hash = hex_hmac_md5("key", "data");

HMAC 结果也可用 base-64 编码或作为二进制字符串,使用 b64_hmac_* 或 str_hmac_*。

其他一些哈希库有相反的参数。如果 JavaScript HMAC 与您的服务器库生成的值不匹配,请尝试交换顺序。

我试过一些这样的python:

> def md5_test(secret, password):
>     
>     return md5(secret+password).hexdigest()
Run Code Online (Sandbox Code Playgroud)

谁能告诉我python中的代码应该是什么才能获得相同的值?

谢谢

And*_*Dog 6

这就是 Pythonhmac模块的用途,不要直接使用 MD5 函数。

# Right
import hmac
# Note that hmac.new defaults to using MD5
hmac.new("password", "message").hexdigest() # 'f37438341e3d22aa11b4b2e838120dcf'

# Wrong
from hashlib import md5
md5("message"+"password").hexdigest() # 'd0647ee3be62a57c9475541c378b1fac'
md5("password"+"message").hexdigest() # 'c494404d2dd827b05e27bd1f30a763d2'
Run Code Online (Sandbox Code Playgroud)

还要看看 HMAC 是如何实现的(例如在Wikipedia 上)。