假设我在浏览器中将一个 1G 文件分割为 1024 个 1Mb 的 block ,获取每个 block 的 SHA1 并临时保存此哈希值。最后,对所有 block 进行哈希处理后,对所有先前收集的 SHA1 哈希值进行 SHA1(对哈希值进行哈希处理)。然后将这个“最终”哈希值发送到我的服务器。
这个哈希值可以安全地识别我在服务器上的文件吗? (假设我们有一个安全连接并且 sha1 没有冲突)
对多个哈希进行哈希是一个坏主意吗?
最佳答案
我想您的目标是检查上传文件的完整性,比较完成后在客户端和服务器端计算的校验和。然后对每个 block 进行哈希处理,将它们组合起来并对结果进行哈希处理就足够了。
//pseudocode
SHA1.digest (
SHA1.digest(chunk 1) + SHA1.digest(chunk 2) + ... + SHA1.digest(chunk n))
但请注意,您可以对整个文件执行增量 SHA1 哈希,将每个 block 添加到计算中。这样一来,结果与一步哈希整个文件相同,并且不需要合并时间数据
SHA1.update(chunk 1)
SHA1.update(chunk 2)
...
SHA1.update(chunk n)
SHA1.digest ()
还可以考虑转向 sha256,如评论中所示,但对于此目的,SHA1 可能就足够了
关于cryptography - 多个 sha1 哈希的 Sha1 哈希 -> 安全识别文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858946/