2008-08-29 10 views

Antwort

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

Es gibt auch 'Digest :: SHA1.base64digest 'foo'' – andrewrk

+10

FYI:' Digest' ist Teil der Ruby Standard Library (http://www.ruby-doc.org/stdlib-) 1.9.2/libdoc/digest/rdoc/index.html). Es enthält Implementierungen für Hash-Algorithmen SHA1, SHA2, MD5 und andere. – jwfearn

-25

Wo serialize 'ist einige an anderer Stelle definiert Benutzerfunktion.

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

Ist das nicht ein Duplikat der @ devstopfix-Antwort? –

+0

auch wenn es ist, es ist ein ziemlich hässlicher Ruby-Code zu suggerieren, und nicht einmal erwähnen, dass es benötigt 'require \' Digest/sha1 \ '' -1 – Rixius

+16

Vergessen Sie nicht, dass stackoverflow zu viele Besucher hat, warum Sie zeigen uns nicht den richtigen Weg? Weniger Kritiker mehr Codebeispiele – Davidslv

8

Für eine Base64 Hashcode, eine Oauth Signatur validiert, I

require 'base64' 
require 'hmac-sha1' 

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

Woher bekommen wir hmac-sha1? sieht aus wie es ist kein Juwel – andrewrk

+6

FYI, die 'hmac-sha1' Anforderung ist erfüllt von dem Juwel 'Ruby-hmac' – andrewrk

+1

Sorry für die Verzögerung, froh, dass Sie es herausgefunden haben. –

5

I erstellt gem einen Helfer verwendet, die um einiges SHA1 Code

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

=> "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1 

=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"