2009-12-24 49 views
7

我与一些代码,有一个工作红宝石标准库的一部分:
消化/ HMAC是

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 


,因为我可以看到,至少在导轨1.8.6它不是部分标准库。它是否来自Ruby 1.9的一部分?如果没有,我应该安装任何宝石?

注意,使用OpenSSL的解决方案将不被接受,因为它会在“需要‘消化/ HMAC’”

有问题的代码反正不能在这里http://github.com/quetzall/cloud_cache/blob/master/lib/cloud_cache.rb

回答

18

它在1.8.7的可用。试试这个:

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

这个例子也适用于v1.8.6。 – ewall 2009-12-24 19:50:58

+0

摘要的字符串也起作用。例如:'OpenSSL :: HMAC.hexdigest(“sha1”,“key”,“secret”)' – 2015-01-12 04:23:10

7

1.9.3 docs

注意:这个库的使用是气馁,因为这个实现是命中注定的实验,但不知何故钻进了1.9系列而不被发现。请改为在“openssl”库中使用OpenSSL :: HMAC。