루비에서 SHA1 해시를 어떻게 만듭니 까?


답변:



8

Base64로 인코딩 된 해시의 경우 Oauth 서명의 유효성을 검사하기 위해

require 'base64'
require 'hmac-sha1'

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

6
참고로는 'HMAC-SHA1의 요구 사항은 보석'루비 HMAC '에서 충족
andrewrk

7

sha1 코드 주위에 간단한 래퍼 인 도우미 보석 을 만들었습니다.

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

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 

-25

'serialize'는 다른 곳에서 정의 된 일부 사용자 함수입니다.

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

이것은 @devstopfix의 답변과 중복되지 않습니까?
앤드류 그림

그것이 그렇더라도 제안하는 것은 꽤 추한 루비 코드이며,`require \ 'digest / sha1 \' '-1
Rixius

16
stackoverflow에 방문자가 너무 많다는 것을 잊지 마십시오. 왜 올바른 방법을 보여주지 않습니까? 덜 비평가 더 많은 코드 예제
Davidslv

1
이 '직렬화'기능은 무엇입니까? 그것은 루비의 일부가 아닙니다. 더 나쁜 것은, hexdigest에 전달되는 문자열이 전혀 동적이지 않다는 것입니다! 이 메소드는 어떤 데이터를 제공하든 동일한 해시를 반환합니다!
Blixxy

2
방법 require 'digest/sha1'을 사용하려면 필요합니다 SHA1.
거스 쇼츠
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.