cha*_*ley 14 git hash md5 scons sha256
在新系统上,我们需要单向散列来计算来自二进制输入的数字签名(例如,一千字节的文本或更大的文本和二进制文件).需求类似于Scons(构建系统)散列命令行和源文件,以及Git(版本控制系统)如何散列文件以计算存储/同步签名.
回想一下,Scons使用MD5,Git使用SHA-1.
虽然MD5和SHA-1已被"破坏",但Scons和Git都没有专门用于安全性(例如,它不存储密码),因此一般做法仍然认为这些算法可以接受.(当然,由于传统的采用,这部分是合理化的.)
问题:您是否会在新系统中使用SHA256(不是MD5或SHA-1)进行(非加密/安全)单向散列?
关注的是:
我特别感兴趣的是一个与Scons或Git社区一致的答案,"我们会永远保留我们的!" 或者"我们希望尽快转向新哈希!" (我不确定他们的计划是什么?)
vcs*_*nes 27
是的,我会使用SHA-256.SHA-256的安全性远远超过安全性; 事实上,需要更换SHA1的原因之一就是你需要一个哈希函数.哈希算法产生有限的站点输出; 虽然输入量不确定.最终会发生碰撞.输出越大; 碰撞的可能性较小(使用适当的哈希算法时).
Git使用SHA1,因为他们使用它作为文件名; 他们希望它小而紧凑.SHA256产生更大的摘要; 消耗更多磁盘空间和更多数据通过线路传输.这个问题专门解决了如果git遇到冲突会发生什么.
看看你的观点:
即使使用MD5,非恶意冲突的概率也很小.这是一个思想实验:
填充良好的硬盘驱动器可能包含1M文件.对于实验,假设有10M文件.假设世界人口为10,000人,每人有一台计算机,每个文件都不同.
我们将与10E6*10E9 = 1E17,<2 ^ 57的许多不同文件竞争
在这样一个遥远的案例中MD5碰撞的概率在2 ^ 71中小于1,或者在大约2E21中小于1!从正确的角度来看,对于10M中1的碰撞概率,我们将不得不重复实验大约2E14次,也就是说,自大爆炸以来每小时更换一次文件,然后再继续使用几十亿年. .
2E14/24/365/13500E6 = 1.69
当然,使用SHA1或SHA256时,概率会更小,并且还会抵抗恶意攻击 - 与MD5不同,现在不可能有人为了拥有相同的哈希来构造文件.