Réponses:
require 'digest/sha1'
Digest::SHA1.hexdigest 'foo'
Digest::SHA1.base64digest 'foo'
Digest
fait partie de la bibliothèque standard Ruby ( ruby-doc.org/stdlib-1.9.2/libdoc/digest/rdoc/index.html ). Il comprend des implémentations pour SHA1, SHA2, MD5 et d'autres algorithmes de hachage.
Pour un hachage encodé en Base64, pour valider une signature Oauth, j'ai utilisé
require 'base64'
require 'hmac-sha1'
Base64.encode64((HMAC::SHA1.new('key') << 'base').digest).strip
J'ai créé une gemme d' assistance qui est un simple wrapper autour d'un code sha1
require 'rickshaw'
> Rickshaw::SHA1.hash('LICENSE.txt')
=> "4659d94e7082a65ca39e7b6725094f08a413250a"
> "hello world".to_sha1
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Où «sérialiser» est une fonction utilisateur définie ailleurs.
def generateKey(data)
return Digest::SHA1.hexdigest ("#{serialize(data)}")
end
require 'digest/sha1'
afin d'utiliser la SHA1
méthode.