Jak utworzyć skrót SHA1 w Ruby?


Odpowiedzi:



8

W przypadku skrótu zakodowanego w Base64, aby zweryfikować podpis Oauth, użyłem

require 'base64'
require 'hmac-sha1'

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

6
Do Twojej wiadomości, wymóg `` hmac-sha1 '' jest spełniony z klejnotu `` ruby-hmac ''
andrewrk

7

Stworzyłem klejnot pomocnika, który jest prostym opakowaniem wokół kodu sha1

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

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 

-25

Gdzie „serialize” to jakaś funkcja użytkownika zdefiniowana w innym miejscu.

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

Czy to nie jest duplikat odpowiedzi @ devstopfix?
Andrew Grimm

nawet jeśli tak, to sugeruje jakiś dość brzydki kod rubinowy i nawet nie wspomina, że ​​wymaga `` require \ 'digest / sha1 \' '-1
Rixius

16
Nie zapominaj, że stackoverflow ma zbyt wielu odwiedzających, dlaczego nie pokazujesz nam właściwego sposobu, aby to zrobić? Mniej krytyków, więcej przykładów kodu
Davidslv

1
co to za funkcja „serializacji”? to nie jest część rubinu. Co gorsza, ciąg przekazany do hexdigest wcale nie jest dynamiczny! Ta metoda zwróci ten sam hash bez względu na to, jakie dane mu podasz!
Blixxy,

2
Potrzebujesz require 'digest/sha1', aby użyć SHA1metody.
Gus Shortz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.