【问题标题】:python hex hmac md5 of passwords not matching javascriptpython hex hmac md5的密码不匹配javascript
【发布时间】:2010-10-27 19:30:44
【问题描述】:

我有一个 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 中应该使用什么代码才能获得相同的值?

谢谢

【问题讨论】:

    标签: python


    【解决方案1】:

    这就是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 上)。

    【讨论】:

    • 所以要获得与我使用的 javascript 代码相同的值:mport hmac hmac.new("secret","password").hexdigest()。谢谢。
    • 它仍然没有返回与javascript方法相同的值??
    • 抱歉,我的调用方法中的密码和密码错误 - 现在可以使用了。非常感谢,节省了我的时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    相关资源
    最近更新 更多