【问题标题】:Equivalent HMAC SHA512 key of ruby code for Python用于 Python 的 ruby​​ 代码的等效 HMAC SHA512 密钥
【发布时间】:2014-07-11 19:35:30
【问题描述】:

以下python代码的ruby代码的等效HMAC SHA512密钥是什么?

Python

 import hmac
 import hashlib
 response = hmac.new(PRIVATE_KEY, post_data, hashlib.sha512).hexdigest()

我在 ruby​​ 中添加了如下代码。但不会产生与 python 中相同的响应

鲁比

 require 'digest/hmac'
 response = Digest::HMAC.hexdigest(post_data, PRIVATE_KEY ,Digest::SHA512)

url_request_object = urllib2.Request("%s/%s" % (BASE_API_URL,url_suffix), 发布数据, 标题) 响应 = urllib2.urlopen(url_request_object)

以下内容对我有用:

   digest = OpenSSL::Digest.new('sha512')

    sign = OpenSSL::HMAC.hexdigest(digest, PRIVATE_KEY, post_data)

【问题讨论】:

    标签: python ruby-on-rails hmac hmacsha1


    【解决方案1】:

    不应使用仅供参考的摘要/hmac。来自 Ruby 文档

    注意:不鼓励使用此库,因为此实现本来是实验性的,但不知何故进入了 1.9 系列而没有引起注意。

    文档建议使用 openssl,但我最好使用 ruby​​-hmac。另外,你绝对需要 SHA512 吗?这是一个使用 SHA1 的解决方案。

    Python

    import hmac
    import hashlib
    response = hmac.new("PRIVATE_KEY", "Stack OverFlow Funtime", hashlib.sha1).hexdigest()
    

    给出 203bf02ea1c71df39a1a6b8ad00db836ec89113c

    鲁比

    require 'rubygems'
    require 'hmac-sha1'
    
    key = 'PRIVATE_KEY'
    signature = "Stack OverFlow Funtime"
    hmac = HMAC::SHA1.new(key)
    hmac.update(signature)
    puts "#{hmac.hexdigest}\n"
    

    给出 203bf02ea1c71df39a1a6b8ad00db836ec89113c

    因此,使用 SHA1 和 ruby​​-hmac,您可以在两种语言中获得相同的哈希值。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多