Hou*_*und 3 ruby python hash sha256 hashlib
我在 python 中使用 hashlib 库,在 ruby 中使用 Digest::SHA256.hexdigest 库
我试过用python,
import hashlib
hasher = hashlib.sha256()
hasher.update("xyz")
hasher.digest()
hash = hasher.hexdigest()
print hash
Run Code Online (Sandbox Code Playgroud)
输出:3608bca1e44ea6c4d268eb6db02260269892c0b42b86bbf1e77a6fa16c3c9282
我试过用红宝石,
require 'digest'
hasher = Digest::SHA256.digest "xyz"
hash = Digest::SHA256.hexdigest(hasher)
Run Code Online (Sandbox Code Playgroud)
输出:“18cefdae0f25ad7bb5f3934634513e54e5ac56d9891eb13ce456d3eb1f3e72e8”
谁能帮助我理解为什么会有区别?如何获得与 python 相同的值?
你想要的 ruby 代码只是
require 'digest'
hash = Digest::SHA256.hexdigest("xyz")
Run Code Online (Sandbox Code Playgroud)
hexdigest 将要消化的字符串作为参数,因此您之前的代码所做的是消化该字符串(作为 32 字节的原始数组返回),然后将该 & 格式的 SHA256 计算为 64 个十六进制字符。
ruby 摘要库也有一个类似于你的 python 示例的 api:
hash = Digest::SHA256.new
hash.update 'xyz'
hash.hexdigest
Run Code Online (Sandbox Code Playgroud)
当您想以增量方式计算散列时