回应模式 - No.59759381


No.59759381 - 技术宅


无标题无名氏No.59759381 只看PO

2023-10-06(五)09:17:22 ID:pBgksxo 回应

肥哥们,小肥有问题想问( ゚∀。)
小肥下黄油,发布者给了哈希值,我就产生了一个疑问,两个不同文件的哈希值会一样吗?
于是我百度了一下
哈希值计算的原理可以看做集合A→B的映射
我们输入(百度说是任意长度)a∈A,输出哈希值b∈B
我注意到哈希值的计算结果是用6个英文字母和数字表示的32位字符串,所以B中的元素是有限个,是16^32个。
如果A中的元素个数超过了B中的元素,就会出现多对一的映射,也就是存在m,n∈A,k∈B,使得f(m)=f(n)=k。
这个时候是不是就是这俩输入值m,n的哈希值一样了( ゚∀。)
jp

无标题无名氏No.59952872

2023-10-25(三)14:29:28 ID: jbXXCqS

来人呐,上cryptographic hash function

无标题无名氏No.59952878

2023-10-25(三)14:30:05 ID: jbXXCqS

密码学哈希函数一个重要特性就是collision resistance

无标题无名氏No.61210870

2024-02-11(日)10:35:36 ID: I4WVjvm

一定会有冲突
冲突概率实际可忽略

你要营造冲突也不是不行,比如给网盘来两个hash一样的文件

无标题无名氏No.61311663

2024-02-19(一)00:52:38 ID: 63fWF7I

对于传输过程中发生的偶然误差,基本上不可能会出现完全相同的哈希值。而故意构造两个相同哈希的文件的话确实存在可能。目前已知MD5和SHA-0,SHA-1有这方面的风险(已知明文和哈希值的情况下可以通过不是完全暴力的方法推算另一个具有同样哈希的数据,但实际上依然很困难),所以现在要保证文件未经修改会用SHA-256之类的。
但是如果校验完整性只是为了防止传输错误的话,用什么都行。

在P2P下载中,哈希值用于标识文件,确定“你要的是这个文件”,而不会因为其他文件重名或者同一个文件名字不同而错失文件。

某些网盘的秒传也是这个原理,为了防止哈希碰撞,它们可能会同时计算几种不同的哈希值,然后计算大小,截取特定位置的数据然后哈希值等,最大程度上降低碰撞的风险。