2009-12-24 4 views
7

i mit einigen Codes ich arbeiten, die eine hat:
zu verdauen/HMAC ist ein Teil von Rubin Standard lib

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 


ich sehen konnte, zumindest in Schienen 1.8.6 sein nicht Teil der Standardbibliothek Ist es ein Teil aus dem Ruby 1.9 Lib? Wenn nicht, sollte ich irgendein Juwel installieren?

Beachten Sie, dass Lösungen OpenSSL wird nicht akzeptiert werden, da sie ohnehin in scheitern "require 'verdauen/hmac'"

Der betreffende Code ist hier http://github.com/quetzall/cloud_cache/blob/master/lib/cloud_cache.rb

Antwort

18

Es ist in 1.8.7 zur Verfügung. Versuchen Sie folgendes:

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

Dieses Beispiel funktioniert auch mit v1.8.6. – ewall

+0

Die Zeichenfolge für den Digest funktioniert auch. z. B .: 'OpenSSL :: HMAC.hexdigest (" sha1 "," key "," secret ")' –

7

Vom 1.9.3 docs:

ACHTUNG: Die Nutzung dieser Bibliothek wird abgeraten, da diese Implementierung experimentelle sein sollte, aber irgendwie in die 1.9-Serie bekam, ohne bemerkt zu werden. Bitte verwenden Sie stattdessen OpenSSL :: HMAC in der Bibliothek "openssl".

Verwandte Themen