2008-08-29 19 views

Respuesta

358
require 'digest/sha1' 
Digest::SHA1.hexdigest 'foo' 
+38

También hay 'Digest :: SHA1.base64digest 'foo'' – andrewrk

+10

FYI:' Digest' es parte de la Biblioteca estándar de Ruby (http://www.ruby-doc.org/stdlib- 1.9.2/libdoc/digest/rdoc/index.html). Incluye implementaciones para SHA1, SHA2, MD5 y otros algoritmos hash. – jwfearn

-25

Donde 'serialize' es una función definida por el usuario en otro lugar.

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

¿No es esto un duplicado de la respuesta de @ devstopfix? –

+0

, incluso si lo es, es un código de rubí bastante feo para sugerir, y ni siquiera menciona que necesita 'require \ 'digest/sha1 \' '-1 – Rixius

+16

No olvide que stackoverflow tiene demasiados visitantes, ¿por qué? usted no nos muestra la forma correcta de hacerlo? Menos críticas más ejemplos de código – Davidslv

8

Para un hash codificado base 64, a una firma validada Oauth, solía

require 'base64' 
require 'hmac-sha1' 

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

¿de dónde sacamos hmac-sha1? parece que no es una gema – andrewrk

+6

FYI, el requisito 'hmac-sha1' se cumple desde la gema 'ruby-hmac' – andrewrk

+1

Disculpa la demora, me alegro de que lo hayas descifrado. –

5

creé un ayudante gem que es un simple envoltorio alrededor de un cierto código sha1

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

=> "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1 

=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"