Using HMAC SHA256 in Ruby

前端 未结 3 1787
温柔的废话
温柔的废话 2020-12-29 05:57

I\'m trying to apply HMAC-SHA256 for generate a key for an Rest API.

I\'m doing something like this:

def generateTransactionHash(stringToHash)
  key          


        
相关标签:
3条回答
  • 2020-12-29 06:33

    In my case (Ticketmatic) I had to create the HMAC like above and add an Authorization header to the request with the HMAC in it.

    hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), secret_key, access_key + name + time)
    req = Net::HTTP::Get.new(uri)
    req['Authorization'] = "TM-HMAC-SHA256 key=#{access_key} ts=#{time} sign=#{hmac}"
    res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
    

    You can find a full gist here

    And a blogpost with more explantion here

    0 讨论(0)
  • 2020-12-29 06:47

    Try This:

    hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, data)
    
    0 讨论(0)
  • 2020-12-29 06:50

    According to the documentation OpenSSL::HMAC.digest

    Returns the authentication code an instance represents as a binary string.

    If you have a problem using that maybe you need a hex encoded form provided by OpenSSL::HMAC.hexdigest

    Example

    key = 'key'
    data = 'The quick brown fox jumps over the lazy dog'
    digest = OpenSSL::Digest.new('sha256')
    
    OpenSSL::HMAC.digest(digest, key, data)
    #=> "\xF7\xBC\x83\xF40S\x84$\xB12\x98\xE6\xAAo\xB1C\xEFMY\xA1IF\x17Y\x97G\x9D\xBC-\x1A<\xD8"
    
    OpenSSL::HMAC.hexdigest(digest, key, data)
    #=> "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"
    
    0 讨论(0)
提交回复
热议问题