Comment créer un hachage SHA1 en ruby?

158

Fonctions SHA Hash

quackingduck
la source
3
Il a été démontré que SHA-1 n'est pas sûr. Pensez à utiliser des alternatives plus sûres, telles que SHA-256 ou SHA-3. shattered.io
Jonas Elfström

Réponses:

384
require 'digest/sha1'
Digest::SHA1.hexdigest 'foo'
devstopfix
la source
41
Il y a aussiDigest::SHA1.base64digest 'foo'
andrewrk
13
FYI: Digestfait 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.
jwfearn le
8

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
Thiago Ganzarolli
la source
6
Pour info, l'exigence `` hmac-sha1 '' est satisfaite à partir de la gemme `` ruby-hmac ''
andrewrk
7

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" 
Gregory Ostermayr
la source
-25

Où «sérialiser» est une fonction utilisateur définie ailleurs.

 def generateKey(data)
    return Digest::SHA1.hexdigest ("#{serialize(data)}")
 end
r4ccoon
la source
N'est-ce pas un double de la réponse de @ devstopfix?
Andrew Grimm
même si c'est le cas, c'est un code ruby ​​assez laid à suggérer, et ne mentionne même pas qu'il a besoin de `require \ 'digest / sha1 \' '-1
Rixius
16
N'oubliez pas que stackoverflow a trop de visiteurs, pourquoi ne nous montrez-vous pas la bonne façon de le faire? Moins de critiques plus d'exemples de code
Davidslv
1
quelle est cette fonction «sérialiser»? cela ne fait pas partie du rubis. Pire encore, la chaîne passée à hexdigest n'est pas du tout dynamique! Cette méthode renverrait le même hachage quelles que soient les données que vous lui donnez!
Blixxy
2
Besoin require 'digest/sha1'afin d'utiliser la SHA1méthode.
Gus Shortz