Hash 是否有一种快速散列算法可以抵抗故意碰撞,如果有,是哪一种?

Hash 是否有一种快速散列算法可以抵抗故意碰撞,如果有,是哪一种?,hash,cryptography,distribution,verification,Hash,Cryptography,Distribution,Verification,我正在开发一个“开放分布式云存储系统” 我所说的开放是指任何人都可以参与文件的托管 我当前的设计使用文件内容的sha1散列作为全局文件id 假定客户端已经知道该散列值,并从“带宽提供者”接收文件 客户端现在需要通过生成散列并将其与预期值进行比较来验证文件是否正确 然而,我担心的是,有人可能会故意修改文件以生成相同的散列。据我所知,这对于CRC家族的哈希很容易实现。一些“谷歌搜索”透露了很多关于MD5也很容易做到这一点的说法 现在我的问题是:是否有一种哈希算法满足being的标准 快速处理大量数

我正在开发一个“开放分布式云存储系统”

我所说的开放是指任何人都可以参与文件的托管

我当前的设计使用文件内容的sha1散列作为全局文件id

假定客户端已经知道该散列值,并从“带宽提供者”接收文件

客户端现在需要通过生成散列并将其与预期值进行比较来验证文件是否正确

然而,我担心的是,有人可能会故意修改文件以生成相同的散列。据我所知,这对于CRC家族的哈希很容易实现。一些“谷歌搜索”透露了很多关于MD5也很容易做到这一点的说法

现在我的问题是:是否有一种哈希算法满足being的标准

  • 快速处理大量数据
  • 在散列范围内分布良好(也称为“唯一”)
  • 具有足够的目标范围(“位长度”)
  • 能够抵抗蓄意碰撞攻击
我所能想到的实现满足我需求的设置的所有其他方法都涉及到一个秘密组件,例如一个秘密的openssl密钥或一个哈希函数的共享秘密盐


不幸的是,我无法处理这个问题。

首先,哈希值永远无法识别文件,因为总会有冲突

话虽如此,你正在寻找的是所谓的。它们的设计目的是,在保留哈希或使用给定哈希生成新数据的同时,不允许(很容易,即暴力除外)修改数据


因此,SHA系列是可以的。

首先,哈希值永远无法识别文件,因为总会有冲突

话虽如此,你正在寻找的是所谓的。它们的设计目的是,在保留哈希或使用给定哈希生成新数据的同时,不允许(很容易,即暴力除外)修改数据


因此,SHA系列还可以。

目前,SHA1已经足够了。没有已知的碰撞


知道你正在散列的东西的平均大小会有很大帮助。但最有可能的是,如果您的平台主要是64位,那么SHA512是您的最佳选择。您可以截断散列并仅使用其中的256位。如果您的平台主要是32位,那么SHA256是您的最佳选择。

目前,SHA1已经足够了。没有已知的碰撞


知道你正在散列的东西的平均大小会有很大帮助。但最有可能的是,如果您的平台主要是64位,那么SHA512是您的最佳选择。您可以截断散列并仅使用其中的256位。如果您的平台主要是32位,那么SHA256是您的最佳选择。

您需要的是一个单向函数,它的存在是一个主要的开放问题

使用加密哈希函数,您希望避免的特定攻击称为“第二次图像前攻击”

这应该可以帮助你在谷歌上搜索你想要的东西,但据我所知,MD5实际上没有已知的实用的第二次图像前攻击

首先,您可能发现很容易找到两个具有相同哈希的任意文件,并且每次尝试时都可以找到两个不同的哈希对

但是很难生成一个文件来伪装成某个特定的文件——换句话说,前面提到的“两个任意文件”中的一个文件实际上不太可能属于存储中的非恶意代理


如果您仍然不满意,您可能希望尝试类似SHA-1、SHA-2或GOST的功能。

您要求的是一个单向函数,它的存在是一个主要的开放问题

使用加密哈希函数,您希望避免的特定攻击称为“第二次图像前攻击”

这应该可以帮助你在谷歌上搜索你想要的东西,但据我所知,MD5实际上没有已知的实用的第二次图像前攻击

首先,您可能发现很容易找到两个具有相同哈希的任意文件,并且每次尝试时都可以找到两个不同的哈希对

但是很难生成一个文件来伪装成某个特定的文件——换句话说,前面提到的“两个任意文件”中的一个文件实际上不太可能属于存储中的非恶意代理


如果您仍然不满意,您可能希望尝试SHA-1、SHA-2或GOST之类的方法。

哈希肯定可以识别文件。你可能会争辩说飞机不能用于旅行,因为它可能会坠毁。我们所做的每件事都有可能出现故障模式。哈希肯定可以识别文件。你可能会争辩说飞机不能用于旅行,因为它可能会坠毁。我们所做的每件事都有可能的失败模式。是的,目前还没有针对MD5的已知攻击。但最新的研究与此过于接近。强烈建议不要在安全领域中使用MD5。GOST(34311)也不是很好的选择。既然有这么多更好的解决方案可供选择,你究竟为什么要选择MD5作为新应用程序呢?是的,目前还没有针对MD5的已知攻击。但最新的研究与此过于接近。强烈建议不要在安全领域中使用MD5。GOST(34311)也不是很好的选择。既然有这么多更好的解决方案可供选择,你究竟为什么要选择MD5作为新应用程序?你想要的是一个安全的哈希函数。对于您的应用程序来说,速度绝对应该是安全性的第二位。请记住,SHA-1或SHA-256等函数的散列速度将比客户端通过网络连接接收文件的速度快几个数量级。您需要的是安全的散列函数。对于您的应用程序来说,速度绝对应该是安全性的第二位——请记住,SHA-1或SHA-256等函数的散列速度将是个数量级