Tag: hmac

Ruby HMAC签名问题

我遇到了HMAC的问题。 我必须在将表格发送到银行之前签署一份表格。 它们仅在其文档中提供PHP中的示例。 我有一个hex密钥来签署我的数据(例如FCEBA61A884A938E7E7FE4F5C68AA7F4A349768EE5957DDFBE99C1D05A09CBACF1FCF0A7084CB2E4CBA95193176C4395DE7F39EA9DBEBEF0907D77192AAE3E8A )。 在PHP示例中,他们在签署数据之前使用密钥执行此操作: $key = “FCEBA61A884A938E7E7FE4F5C68AA7F4A349768EE5957DDFBE99C1D05A09CBACF1FCF0A7084CB2E4CBA95193176C4395DE7F39EA9DBEBEF0907D77192AAE3E8A”; $message = “param1=a&param2=b”; $binKey = pack(‘H*’, $key); $signature = hash_hmac(‘sha512’, $msg, $binKey); echo $signature; // => a3efb70368bee502ea57a1a4708cac8912a5172075ea8dec2de2770dfbb4c8fb587f03fdadc0ca4f9e1bb024cfda12866295b259f5fb4df2fe14d960874a68ab 我不明白为什么他们打包钥匙,如果我应该用我的钥匙做类似的事情。 我在Ruby代码中执行了以下操作: key = “FCEBA61A884A938E7E7FE4F5C68AA7F4A349768EE5957DDFBE99C1D05A09CBACF1FCF0A7084CB2E4CBA95193176C4395DE7F39EA9DBEBEF0907D77192AAE3E8A” message = “param1=a&param2=b” digest = OpenSSL::Digest.new(‘sha512’) signature = OpenSSL::HMAC.hexdigest(digest, key, message) puts signature # => d817611845246640d1224a0874bf60fed0956a367aa3069b7947cbec56903bb5d8c54df170f5504c586dad55e4f879c70cf1a40526cfc9f35411195822c535ed

Ruby和PHP HMAC不同意

我正在尝试在Ruby中创建一个HMAC,然后在PHP中validation它。 ruby: require ‘openssl’ message = “A522EBF2-5083-484D-99D9-AA97CE49FC6C,1234567890,/api/comic/aWh62,GET” key = “3D2143BD-6F86-449F-992C-65ADC97B968B” hash = OpenSSL::HMAC.hexdigest(‘sha256’, message, key) p hash PHP: 对于Ruby,我得到:20e3f261b762e8371decdf6f42a5892b530254e666508e885c708c5b0bfc03d3 对于PHP,我得到:e5f6995ba1496b2fb144329b2d1b3b23c8fa3211486e57bfaec5d993a1da9d15 我和一些同事完全失去了,任何帮助都将不胜感激。

无法使用HMAC SHA256从示例中重现AWS签名

我正在关注这个例子 http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html 并试图重现64个字符串的签名,他们声称… aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404 我已成功匹配Canonical Request的hex digeset,并确认StringToSign字符串是正确的。 最后一部分是计算signing_key和签名。 这是我使用提供的ruby函数’getSignatureKey’击中路障的地方 http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-ruby signing_key = getSignatureKey secret_access_key, current_date, region, aws_service signature = OpenSSL::HMAC.digest(‘sha256’, signing_key, string_to_sign) def getSignatureKey key, dateStamp, regionName, serviceName kDate = OpenSSL::HMAC.digest(‘sha256’, “AWS4” + key, dateStamp) kRegion = OpenSSL::HMAC.digest(‘sha256’, kDate, regionName) kService = OpenSSL::HMAC.digest(‘sha256’, kRegion, serviceName) kSigning = OpenSSL::HMAC.digest(‘sha256′, kService, “aws4_request”) kSigning end ‘signature’的当前输出是这个奇怪的字符序列。 ٻ . […]

如何为SHA256获取Ruby生成的HMAC,以便安全地匹配Java?

我有一个运行一些Java代码的tomcat服务器,允许用户使用API​​密钥进行身份validation。 该请求使用使用SHA256创建的HMAC。 我有一个Ruby客户端,我用它来发出请求,因为我刚接触加密,我很难让它生成匹配的HMAC。 我试过不把它设为URL安全,并且匹配。 所以我真的很想知道如何让Ruby客户端与URL安全版本匹配(因为我无法更改Java代码)。 它最后只有一个额外的=字符。 在此先感谢您的帮助。 对于Ruby我使用1.9.3而对于Java我使用6u31以及来自apache的commons-codec-1.6.jar库。 码 ruby: require “openssl” require “base64” json_str = “{‘community’:’LG7B734A’, ‘login_id’:’user1′, ‘time’:’1331928899′}” digest = OpenSSL::Digest::Digest.new(“sha256”) key = [ “4cc45e4258121c3fec84147673e1bd88e51b1c177aafcfa2da72bd4655c9f933” ] hmac = OpenSSL::HMAC.digest(digest, key.pack(“H*”), json_str) encoded_url_safe = Base64.urlsafe_encode64(hmac) encoded = Base64.encode64(hmac) puts(“Encoded (Url Safe): ” + encoded_url_safe) puts(“Encoded : ” + encoded) Java的: import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; import […]

如何在Ruby中使用HMAC模块创建MD5哈希?

使用Google + Bing并没有给出一个简单问题的答案: 你应该如何在Ruby中使用HMAC模块来创建一个带MD5的HMAC(使用秘密)? HMAC文档似乎非常薄。 谢谢!