这是我见过的最奇怪的事情之一.我正在维护的一些遗留代码会生成摘要:
require 'digest/sha1'
def encrypt(password, salt)
Digest::SHA2.hexdigest("--#{salt}--#{password}--")
end
Run Code Online (Sandbox Code Playgroud)
我用"hello"和"world"作为参数调用该方法,我得到了这个:
15ea8ac62708f3810b720b25dd6febe9d0ddc1ed
Run Code Online (Sandbox Code Playgroud)
但如果我直接这样做:
Digest::SHA2.hexdigest("--world--hello--")
Run Code Online (Sandbox Code Playgroud)
我明白了:
c95b3d8968d8044c42ff650ade81315ab9adf120e2b62a637e64fa362cb828dd
Run Code Online (Sandbox Code Playgroud)
请原谅我的法语,但WTF?!
Digest::SHA2我应该寻找某种设置吗?什么可能引发差异?
Phr*_*ogz 26
我认为你的第一个代码实际上是:
def encrypt(password, salt)
Digest::SHA1.hexdigest("--#{salt}--#{password}--")
end
Run Code Online (Sandbox Code Playgroud)
...因为:
irb> Digest::SHA1.hexdigest '--world--hello--'
#=> "15ea8ac62708f3810b720b25dd6febe9d0ddc1ed"
irb> Digest::SHA2.hexdigest '--world--hello--'
#=> "c95b3d8968d8044c42ff650ade81315ab9adf120e2b62a637e64fa362cb828dd"
Run Code Online (Sandbox Code Playgroud)
因此,您提出的问题中的代码可能不是您应用程序中实际存在的代码,或者其他人正在重新定义encrypt完全相同的方式,但是使用SHA1,或者您已经在代码中进行了更改,但仍在使用旧/缓存代码没有意识到.
| 归档时间: |
|
| 查看次数: |
4683 次 |
| 最近记录: |