2009-12-24 16 views
7

Sto lavorando con alcuni codici che ha un:
digerire/HMAC è parte del rubino lib standard di

begin 
require 'digest/hmac' 
USE_EMBEDDED_HMAC = false 
rescue 
puts "HMAC, not found in standard lib." + $!.message 
require 'hmac-sha1' 
USE_EMBEDDED_HMAC = true 
end 


come ho potuto vedere, almeno in rotaie 1.8.6 la sua non è una parte del lib standard Fa parte del Ruby 1.9 lib? In caso contrario, dovrei installare qualche gemma?

Nota che le soluzioni che utilizzano OpenSSL non saranno accettate perché non riuscirà comunque a "require 'digerire/hmac'"

Il codice in questione è qui http://github.com/quetzall/cloud_cache/blob/master/lib/cloud_cache.rb

risposta

18

E 'disponibile in 1.8.7. Prova questo:

ruby -v 
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9] 

require 'openssl' 
digest = OpenSSL::Digest::Digest.new('sha1') 
OpenSSL::HMAC.digest(digest, "superscret", "Lorem ipsum dolor sit amet") 
OpenSSL::HMAC.hexdigest(digest, "superscret", "Lorem ipsum dolor sit amet") 
+2

Questo esempio funziona anche su v1.8.6. – ewall

+0

Anche la stringa per il digest funziona. ad es .: 'OpenSSL :: HMAC.hexdigest (" sha1 "," key "," secret ")' –

7

Dal 1.9.3 docs:

ATTENZIONE: l'uso di questa libreria è scoraggiato, perché questa implementazione è stata pensata per essere sperimentale, ma in qualche modo ottenuto nella serie 1.9 senza essere notato. Utilizzare invece OpenSSL :: HMAC nella libreria "openssl".

Problemi correlati