2009-12-24 12 views
7

estoy trabajando con algunos códigos que tiene un:
digerir/hmac es parte de rubí lib estándar

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 


que pude ver, al menos en los carriles 1.8.6 no es parte de la lib estándar ¿Es parte del ruby ​​1.9 lib? Si no, ¿debería instalar alguna gema?

Tenga en cuenta que no se aceptarán soluciones utilizando OpenSSL, ya que se producirá un error de todos modos en "requerir 'digerir/hmac'"

El código en cuestión es aquí http://github.com/quetzall/cloud_cache/blob/master/lib/cloud_cache.rb

Respuesta

18

Está disponible en 1.8.7. Prueba esto:

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

Este ejemplo también funciona en v1.8.6. – ewall

+0

La cadena para el resumen también funciona. e.g .: 'OpenSSL :: HMAC.hexdigest (" sha1 "," clave "," secreto ")' –

7

Desde el 1.9.3 docs:

PRECAUCIÓN: El uso de esta biblioteca no es recomendable, ya que esta aplicación estaba destinado a ser experimental, pero de alguna manera se metió en la serie 1.9 sin que se note. Utilice OpenSSL :: HMAC en su lugar en la biblioteca "openssl".

Cuestiones relacionadas