Como crio um hash SHA1 em ruby?


Respostas:



8

Para um hash codificado em Base64, para validar uma assinatura Oauth, usei

require 'base64'
require 'hmac-sha1'

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

6
Para sua informação, o requisito 'hmac-sha1' é atendido a partir da gema 'ruby-hmac'
andrewrk

7

Eu criei uma gema auxiliar que é um invólucro simples em torno de um código sha1

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

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 

-25

Onde 'serializar' é alguma função do usuário definida em outro lugar.

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

Isso não é uma duplicata da resposta do @ devstopfix?
Andrew Grimm

mesmo que seja, é algum código ruby muito feio para ser sugerindo, e nem sequer mencionar que ele precisa `exigem \ 'digerir / sha1 \'' -1
Rixius

16
Não se esqueça que o stackoverflow tem muitos visitantes. Por que você não nos mostra o caminho certo para fazer isso? Menos críticos mais exemplos de código
Davidslv

1
o que é essa função 'serializar'? isso não faz parte do ruby. Pior ainda, a string que está sendo passada para o hexdigest não é dinâmica! Esse método retornaria o mesmo hash, independentemente dos dados que você fornecer!
Blixxy

2
Necessidade require 'digest/sha1'para usar o SHA1método.
Gus Shortz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.