用于Python的等效HMAC SHA512 ruby代码密钥
问题描述:
以下python代码的等价HMAC SHA512 ruby代码密钥是什么?用于Python的等效HMAC SHA512 ruby代码密钥
的Python:
import hmac
import hashlib
response = hmac.new(PRIVATE_KEY, post_data, hashlib.sha512).hexdigest()
如下我添加在红宝石的码。但不产生相同的响应,在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才能) post_data, 头) 响应= urllib2.urlopen(url_request_object)
以下是为我工作:
digest = OpenSSL::Digest.new('sha512')
sign = OpenSSL::HMAC.hexdigest(digest, PRIVATE_KEY, post_data)
答
FYI digest/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可以在两种语言中获得相同的散列值。希望有所帮助。