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

标签 cryptography sha1

假设我在浏览器中将一个 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/

相关文章:

cryptography - 验证 jwt token [rsa]

android - 未经授权,安卓推送通知

powershell - 在 PowerShell 版本 2 中将字符串转换为字节数组

node.js - 如果 RSA 证书过期,NodeJS 加密模块是否无法通过验证?

c# - 如何获取证书支持的算法列表

python - 无法为 Python 2.7.11 安装 openssl-devel

md5 - 将整个哈希范围拆分为 n 个相等的范围

php - 使用 PHP 在登录表单中使用 sha1 加盐密码?

python - 如何在 Python 中验证 RSA SHA1 签名?

cryptography - Java 字节数组到 ECCPrivateKey - InvalidKeySpecException : encoded key spec not recognised