Comment créer un hachage SHA1 en ruby?


Réponses:



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

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" 

-25

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

 def generateKey(data)
    return Digest::SHA1.hexdigest ("#{serialize(data)}")
 end

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.