2008-08-29 48 views

Trả lời

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

Ngoài ra còn có 'Digest :: SHA1.base64digest 'foo'' – andrewrk

+10

FYI:' Digest' là một phần của Thư viện chuẩn của Ruby (http://www.ruby-doc.org/stdlib- 1.9.2/libdoc/digest/rdoc/index.html). Nó bao gồm việc triển khai các thuật toán băm SHA1, SHA2, MD5 và các thuật toán băm khác. – jwfearn

-25

đâu serialize 'là một số chức năng người dùng định nghĩa ở đâu.

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

Đây có phải là bản sao câu trả lời của @ devstopfix không? –

+0

ngay cả khi nó được, đó là một số mã ruby ​​khá xấu xí được đề xuất, và thậm chí không đề cập rằng nó cần 'yêu cầu \ 'tiêu hóa/sha1 \' '-1 – Rixius

+16

Đừng quên rằng stackoverflow có quá nhiều khách truy cập, tại sao bạn không cho chúng ta thấy đúng cách để làm điều đó? Ít nhà phê bình hơn mã ví dụ – Davidslv

8

Đối với một băm Base64 mã hóa, để xác nhận chữ ký OAuth, tôi sử dụng

require 'base64' 
require 'hmac-sha1' 

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

chúng ta lấy hmac-sha1 ở đâu? trông giống như nó không phải là đá quý – andrewrk

+6

FYI, yêu cầu 'hmac-sha1' được đáp ứng từ đá quý 'ruby-hmac' – andrewrk

+1

Xin lỗi vì sự chậm trễ, vui mừng bạn đã tìm ra nó. –

5

Tôi tạo ra một helper gem mà là một wrapper đơn giản xung quanh một số mã sha1

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

=> "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1 

=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 
Các vấn đề liên quan