【发布时间】:2010-09-07 06:18:27
【问题描述】:
【问题讨论】:
-
SHA-1 已被证明是不安全的。考虑使用更安全的替代方案,例如 SHA-256 或 SHA-3。 shattered.io
【问题讨论】:
require 'digest/sha1'
Digest::SHA1.hexdigest 'foo'
【讨论】:
Digest::SHA1.base64digest 'foo'
Digest 是 Ruby 标准库 (ruby-doc.org/stdlib-1.9.2/libdoc/digest/rdoc/index.html) 的一部分。它包括 SHA1、SHA2、MD5 和其他哈希算法的实现。
Digest::SHA2.hexdigest,因为它更安全并且(尚未)被发现有任何冲突。
对于 Base64 编码的哈希,为了验证 Oauth 签名,我使用了
require 'base64'
require 'hmac-sha1'
Base64.encode64((HMAC::SHA1.new('key') << 'base').digest).strip
【讨论】:
我创建了一个帮助器 gem,它是一些 sha1 代码的简单包装器
require 'rickshaw'
> Rickshaw::SHA1.hash('LICENSE.txt')
=> "4659d94e7082a65ca39e7b6725094f08a413250a"
> "hello world".to_sha1
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
【讨论】:
“序列化”是在别处定义的一些用户函数。
def generateKey(data)
return Digest::SHA1.hexdigest ("#{serialize(data)}")
end
【讨论】:
require 'digest/sha1' 才能使用SHA1 方法。