Come faccio a creare un hash SHA1 in ruby?


Risposte:



8

Per un hash con codifica Base64, per convalidare una firma Oauth, ho usato

require 'base64'
require 'hmac-sha1'

Base64.encode64((HMAC::SHA1.new('key') << 'base').digest).strip

6
Cordiali saluti, il requisito 'hmac-sha1' è soddisfatto dalla gemma 'ruby-hmac'
andrewrk

7

Ho creato una gemma helper che è un semplice wrapper attorno al codice sha1

require 'rickshaw'
> Rickshaw::SHA1.hash('LICENSE.txt')

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 

-25

Dove 'serializzare' è una funzione utente definita altrove.

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

Non è questo un duplicato della risposta di @ devstopfix?
Andrew Grimm,

anche se lo è, è un brutto codice rubino piuttosto brutto da suggerire e non menziona nemmeno che ha bisogno di `richiedono \ 'digest / sha1 \' '-1
Rixius

16
Non dimenticare che StackOverflow ha troppi visitatori, perché non ci mostri il modo giusto di farlo? Meno critici più esempi di codice
Davidslv,

1
cos'è questa funzione 'serializza'? non fa parte del rubino. Peggio ancora, la stringa che viene passata a hexdigest non è affatto dinamica! Questo metodo restituirebbe lo stesso hash indipendentemente da quali dati gli dai!
Blixxy,

2
È necessario require 'digest/sha1'per utilizzare il SHA1metodo.
Gus Shortz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.