2009-12-24 12 views
7

je travaille avec des codes qui a un:
digérer/HMAC fait partie de lib standard Ruby

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 


Comme je pouvais voir, au moins dans des rails 1.8.6 sa ne fait pas partie de la lib standard Est-ce une partie de la liby 1.9 lib? Si non, devrais-je installer une gemme?

Notez que des solutions utilisant OpenSSL ne seront pas acceptées car il échouera de toute façon dans "require 'digest/HMAC'"

Le code en question est ici http://github.com/quetzall/cloud_cache/blob/master/lib/cloud_cache.rb

Répondre

18

Il est disponible en 1.8.7. Essayez ceci:

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

Cet exemple fonctionne également sur la version 1.8.6. – ewall

+0

La chaîne pour le résumé fonctionne aussi. Par exemple: 'OpenSSL :: HMAC.hexdigest (" sha1 "," key "," secret ")' –

7

De l'1.9.3 docs:

ATTENTION: L'utilisation de cette bibliothèque est déconseillée, car cette mise en œuvre devait être expérimental, mais en quelque sorte dans la série a obtenu 1.9 sans être remarqué. Veuillez utiliser OpenSSL :: HMAC dans la bibliothèque "openssl" à la place.