联系方式:蝙蝠号:209655。
我们对散列函数的要求是:接受任何长度的输入,返回一个固定大小的输出(256位),并且是有效可计算的。这个函数也有一种有效地找到碰撞的方法。需要注意的是,该函数只返回输入的最后256位。碰撞的值是3加2的256次方。虽然我们的通用碰撞检测方法在实践中不可用,但至少存在一些有效的碰撞检测方法的哈希函数。
然而,对于其他哈希函数,我们不知道是否存在这样的方法。我们怀疑它们是抗碰撞的。但是,没有任何哈希函数被证明是抗碰撞的。我们依赖的加密哈希函数只是人们尝试的功能,很难找到碰撞并且从未成功过。有些哈希函数像旧的MD5哈希函数在多年的工作中发现了碰撞,导致功能过时并被人们逐步废弃。因此,我们选择相信那些是抗碰撞的函数。
应用:消息摘要
既然我们知道抗碰撞是什么,那么一个合乎逻辑的问题是:抗碰撞有什么用?这里给出一个应用示例:如果我们知道抗碰撞哈希函数H的两个不同输入x和y,那么我们可以安全地假设它们的hash值H(x)和H(y)也是不同的。如果有人知道两个不同的输入具有相同的hash值,这将违反我们的假设,这样的哈希函数是抗碰撞的。
这个论证允许我们使用哈希输出这是一个经过身份验证的在线文件存储系统,允许用户在下载文件时上传文件并确保其完整性。假设Alice上传了一个很大的文件,并希望稍后能验证她下载的文件与上传的文件是相同的。一种方法是将整个大文件保存在本地并直接与下载的文件进行比较。虽然这种方法是有效的,但它在很大程度上违背了上传文件的目的;如果Alice需要访问本地副本以确保文件完整性,那么她可以直接使用本地副本。