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

时间:2010-10-27 11:24:15

标签: python

我有一个javascript密码编码器

  

md5 = hex_hmac_md5(秘密,密码)

我如何在python中模拟这个 - 我已经尝试过md5,但这不是同一个值

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

Pajs Home

(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()

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

由于

1 个答案:

答案 0 :(得分:4)

这就是Python hmac模块的用途,不要直接使用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'

另请参阅如何实施HMAC(例如,在Wikipedia上)。