多个sha1-hashes的Sha1哈希 - >安全识别文件?

时间:2017-03-17 13:34:49

标签: cryptography sha1

假设我在浏览器中将1G文件拆分为1024块1Mb,获取每个块的SHA1并暂时保存此哈希值。最后在对所有块进行散列之后,对所有先前收集的SHA1哈希进行SHA1(执行散列哈希)。然后将此“最终”-hash发送到我的服务器。

这个哈希是否可以安全地识别服务器上的文件? (假设我们有一个安全的连接,而sha1是无冲突的)

执行多个哈希的哈希是不是一个坏主意?

2 个答案:

答案 0 :(得分:3)

我猜您的目标是检查上传文件的完整性,比较客户端和服务器端在完成后计算的chekcsum。然后散列每个块,组合它们并散列结果就足够了。

//pseudocode
SHA1.digest ( 
    SHA1.digest(chunk 1) + SHA1.digest(chunk 2) + ... + SHA1.digest(chunk n))

但请注意,您可以在完整文件上执行增量SHA1哈希,将每个块添加到计算中。通过这种方式,结果与在一个步骤中散列整个文件的结果相同,并且您不需要组合时态数据

    SHA1.update(chunk 1)
    SHA1.update(chunk 2)
    ...
    SHA1.update(chunk n)
    SHA1.digest ()

考虑转移到sha256,如评论中所示,但可能为此目的SHA1就足够了

答案 1 :(得分:0)

这应该有效。假设SHA-1为collision free,对于两个不同的文件,至少其中一个哈希值彼此不同。所以" final"哈希也会有所不同。

通常,散列哈希不会提高安全性。如果您想要更高的安全性,请使用SHA-256。