为大于内存的数据生成哈希(不会被捕)
溢出们下午好! ;)
我想要做什么:
我对验证传输文件的完整性感兴趣。
我是如何处理它的:
我正在考虑为此使用哈希码,但有一个问题。这些文件可能非常大,因此我需要能够迭代生成哈希值。我无法将整个文件加载到内存中。
到目前为止我看到的内容:
我正在调查murmur3 和 skein 用于哈希函数。我相信我了解如何使其与 skein 一起使用,但我构建的版本未通过所有已知的结果单元测试。我不知道如何“链接”杂音以获得有效的结果。
有什么建议吗?
Good afternoon Overflowers! ;)
What I want to do:
I'm interested in verifying transferred file integrity.
How I approached it:
I was considering using a hash code for this but there's one problem. The files can be extremely large so I need to be able to iteratively generate the hash. I can't load the entire file into memory.
What I've looked at so far:
I'm investigating murmur3 and skein for the hash function. I believe I understand how to make it work with skein but the version I've built fails all the known result unit tests. I'm not sure how to "chain" murmur to get a valid result.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大多数哈希算法对固定大小的数据块进行操作 - 例如,您可以查找 SHA1 或 MD5 参考实现,它们使用“init/loop { update }/finalize”结构,允许您根据需要传递任意多或少的数据每次更新。
例如 Skein,他们在参考实现中使用相同的概念:
为什么您认为需要将整个数据作为一个块传递?您正在寻找简化的包装函数吗?
Most hash algorithms operate on fixed-size blocks of data - you can e.g. look up SHA1 or MD5 reference implementations, they use an "init/loop { update }/finalize" construct allowing you to pass as much or little data as you wish in every update.
Looking at e.g. Skein, they use the same concept in their reference implementation:
Why do you think you need to pass the entire data as one block? Are you looking at simplified wrapper functions?
您应该看看 Crypto++。这是我最喜欢的加密 C++ 库。
这里是如何使用它。
You should have a look at Crypto++. It's my favorite cryptographic C++ library.
And here's how you could use it.