Как это сделать в Ruby на рельсах - PullRequest
1 голос
/ 03 августа 2010

Это код C #:

byte[] pb = System.Text.Encoding.UTF8.GetBytes(policy.ToString());

// Encode those UTF-8 bytes using Base64
string policyB = Convert.ToBase64String(pb);

// Sign the policy with your Secret Key using HMAC SHA-1.
System.Security.Cryptography.HMACSHA1 hmac = new System.Security.Cryptography.HMACSHA1();
hmac.Key = System.Text.Encoding.UTF8.GetBytes(secretKey);

byte[] signb = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(policyB));

string signature = Convert.ToBase64String(signb);

Как сделать то же самое в Ruby на рельсах? В частности, мне нужно знать функции для получения байтов из строки и их кодировки base64 и вычисления хэша hmac.

Ответы [ 2 ]

4 голосов
/ 03 августа 2010

Не уверен, что точно тоже самое, но у меня работает:

@policy = ActiveSupport::Base64.encode64s(@policy)

# Sign policy with secret key
digest = OpenSSL::Digest::Digest.new('sha1')
@signature = ActiveSupport::Base64.encode64s(OpenSSL::HMAC.digest(digest, secretKey, @policy))
2 голосов
/ 03 августа 2010

попробую еще раз.

Существует несколько библиотек HMAC для ruby ​​/ rails, которые могут сделать это намного проще: http://auth -hmac.rubyforge.org /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...