存储要以加密形式存储的原始未加密文件的 sha256 哈希是否安全?

Is it safe to store sha256 hash of the original unencripted file that is to be stored in encrypted form?

我正在开发一个文档管理系统,为了检测 files/duplicates 文件的变化,我使用 sha256 获取摘要进行比较。这是在 python 中完成的。系统可以配置为在存储前加密文件。

问题是存储未加密文件的摘要是否仍然安全。

此摘要用作存储文件的标识符,还用于检测添加到系统中的文件是否已经存在。为此,我同意 sha256 算法发生碰撞的可能性。我还读到,sha256 生成的摘要不能用于重新创建原始数据。

假设无法从哈希中重建文件,而且文件是以加密形式存储的事实,保持 comparisons/searching 的原始哈希正确应该是安全的......或者我应该重新考虑我的战略?这些比较将在应用程序内部进行,无论如何都不会暴露给用户。

SHA-256的原像抵抗力为2^256,碰撞抵抗力为2^128(brief summary)。另一方面,您可以简单地检查猜测解密文件的密钥所需的组合数。 SHA-256 原像攻击的复杂性与破解对称加密的 256 位密钥相当。因此,总的来说,我认为这种方法足够安全,因为通过猜测密钥比从 SHA-256 中查找原像更容易恢复原始文件。

最好知道您将使用哪种算法和参数进行文件加密,也许在您的情况下答案会有所不同。