Wie erstelle ich einen SHA1-Hash in Ruby?

158

SHA Hash-Funktionen

Quacksalber
quelle
3
Es wurde gezeigt, dass SHA-1 unsicher ist. Erwägen Sie die Verwendung sicherer Alternativen wie SHA-256 oder SHA-3. shattered.io
Jonas Elfström

Antworten:

8

Für einen Base64-codierten Hash habe ich zur Validierung einer Oauth-Signatur verwendet

require 'base64'
require 'hmac-sha1'

Base64.encode64((HMAC::SHA1.new('key') << 'base').digest).strip
Thiago Ganzarolli
quelle
6
Zu Ihrer Information, die 'hmac-sha1'-Anforderung wird vom Edelstein' ruby-hmac '
erfüllt
7

Ich habe einen Helfer Juwel , das eine einfache Wrapper um einige SHA1 - Code ist

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

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 
Gregory Ostermayr
quelle
-25

Wobei 'serialisieren' eine Benutzerfunktion ist, die an anderer Stelle definiert ist.

 def generateKey(data)
    return Digest::SHA1.hexdigest ("#{serialize(data)}")
 end
r4ccoon
quelle
Ist das nicht ein Duplikat von @ devstopfix 'Antwort?
Andrew Grimm
Selbst wenn es so ist, ist es ein ziemlich hässlicher Ruby-Code, der vorgeschlagen werden muss, und er erwähnt nicht einmal, dass er "require \" Digest / sha1 \ "-1
Rixius
16
Vergessen Sie nicht, dass der Stackoverflow zu viele Besucher hat. Warum zeigen Sie uns nicht den richtigen Weg? Weniger Kritiker mehr Codebeispiele
Davidslv
1
Was ist diese Serialisierungsfunktion? Das ist kein Teil von Rubin. Schlimmer noch, die Zeichenfolge, die an hexdigest übergeben wird, ist überhaupt nicht dynamisch! Diese Methode würde den gleichen Hash zurückgeben, unabhängig davon, welche Daten Sie ihm geben!
Blixxy
2
Benötigen require 'digest/sha1', um SHA1Methode zu verwenden .
Gus Shortz