gpt4 book ai didi

file - 一个合适的哈希函数来检测数据损坏/检查数据完整性?

转载 作者:行者123 更新时间:2023-12-04 01:55:22 25 4
gpt4 key购买 nike

用于文件完整性检查(校验和)以检测损坏的最合适的哈希函数是什么?

我需要考虑以下几点:

广泛的文件大小(1 kb 到 10GB+)
许多不同的文件类型
大量文件(+/- 100 TB 且不断增加)

较大的文件是否需要更高的摘要大小(SHA-1 与 SHA 512)?

我看到 SHA 系列被称为加密哈希函数。它们是否不适合“通用”用途,例如检测文件损坏?像 MD5 或 Tiger 这样的东西会更好吗?

如果恶意篡改也是一个问题,您的答案是否会更改为最合适的哈希函数?

外部库不是一个选项,只有在 Win XP SP3+ 上可用。

当然,性能也是值得关注的。

(如果我的术语不正确,请原谅我的术语,我对这个主题的了解非常有限)。

最佳答案

任何加密哈希函数,即使是损坏的函数,也可以用于检测意外损坏。一个给定的散列函数可能只针对达到某个限制的输入定义,但对于所有标准散列函数,该限制至少为 264 位,即大约 2 百万 TB。这是相当大的。

文件类型没有任何关联。散列函数对位(或字节)序列进行操作,而不管这些位代表什么。

哈希函数性能不太可能成为问题。即使是“慢”散列函数(例如 SHA-256)在典型 PC 上的运行速度也比在硬盘上快:读取文件将是瓶颈,而不是对其进行散列(2.4 GHz PC 可以使用 SHA-512 以一定速度散列数据接近 200 MB/s,使用单核)。如果哈希函数性能是一个问题,那么要么你的 CPU 非常弱,要么你的磁盘是快速 SSD(如果你有 100 TB 的快速 SSD,那么我有点嫉妒)。在这种情况下,一些哈希函数比其他哈希函数快一些,MD5 是“快速”函数之一(但 MD4 更快,而且它的代码足够简单,可以轻松地包含在任何应用程序中)。

如果恶意篡改是一个问题,那么这将成为一个安全问题,而且更加复杂。首先,您希望使用加密完整的哈希函数之一,因此是 SHA-256 或 SHA-512,而不是 MD4、MD5 或 SHA-1(MD4、MD5 和 SHA-1 中发现的弱点可能不适用于特定的情况,但这是一个微妙的问题,最好谨慎行事)。然后,散列可能足够也可能不够,这取决于攻击者是否可以访问散列结果。可能,您可能需要使用 MAC ,它可以被视为一种键控散列。 HMAC是从散列函数中构建 MAC 的标准方法。还有其他非基于哈希的MAC。此外,MAC 使用 secret 的“对称” key ,如果您希望某些人能够验证文件完整性而不能执行静默更改,则这不合适;在这种情况下,您将不得不求助于数字签名。简而言之,在安全上下文中,您需要使用明确定义的攻击模型进行彻底的安全分析。

关于file - 一个合适的哈希函数来检测数据损坏/检查数据完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com