Ruby: 如何将摘要写入二进制格式的文件
Ruby: How can I write a digest to a file in binary format
我需要将 Digest::SHA512 对象存储到 二进制 格式的文件中。
这看起来微不足道,但无论我尝试什么,都只是将其写成十六进制字符串。
我期待以下代码能够工作:
bindigest=digest.update(chall)
File.open('sha1.bin', 'wb') {|file| file.write(bindigest) }
但它没有:它转换为纯文本。
一个类似的问题似乎没有答案:
Can I serialize a ruby Digest::SHA1 instance object?
使用解包工具需要将 bigint 转换为二进制字符串,这又不是一件容易的事...
有什么建议吗?
提前致谢!
to_s
method of Digest
returns the hexadecimal encoding of the hash, so this is what you get by default when trying to output it (since Ruby will use to_s
when writing). To get the raw binary, use digest
:
digest = Digest::SHA512.new
digest.update(chall)
File.open('sha1.bin', 'wb') { |file| file.write(digest.digest) }
或者,如果您不计算块中的散列,您可以使用 class method version of digest
:
digest = Digest::SHA512.digest(chall)
File.open('sha1.bin', 'wb') { |file| file.write(digest) }
我需要将 Digest::SHA512 对象存储到 二进制 格式的文件中。
这看起来微不足道,但无论我尝试什么,都只是将其写成十六进制字符串。
我期待以下代码能够工作:
bindigest=digest.update(chall)
File.open('sha1.bin', 'wb') {|file| file.write(bindigest) }
但它没有:它转换为纯文本。
一个类似的问题似乎没有答案:
Can I serialize a ruby Digest::SHA1 instance object?
使用解包工具需要将 bigint 转换为二进制字符串,这又不是一件容易的事... 有什么建议吗?
提前致谢!
to_s
method of Digest
returns the hexadecimal encoding of the hash, so this is what you get by default when trying to output it (since Ruby will use to_s
when writing). To get the raw binary, use digest
:
digest = Digest::SHA512.new
digest.update(chall)
File.open('sha1.bin', 'wb') { |file| file.write(digest.digest) }
或者,如果您不计算块中的散列,您可以使用 class method version of digest
:
digest = Digest::SHA512.digest(chall)
File.open('sha1.bin', 'wb') { |file| file.write(digest) }