我正在使用MD5进行文件重复数据删除。这很好,因为文件来自可信来源,他们不会故意利用MD5的缺点。
稍后,我可能会接受不受信任的文件,并对其进行重复数据删除。我已经阅读了MD5 on Wikipedia的摘要,这个哈希的质量似乎有很多缺点。通常建议使用SHA-1或更好。
SHA-1& SHA-256更长。我可以使用XOR两半来达到128位的答案,但这看起来效率很低。
是否存在适合重复数据删除用例的推荐128位哈希?我知道它是如此轻微我可以继续使用MD5,但似乎现在已经开发了另一种128位替代方案?
答案 0 :(得分:2)
您可以使用左侧128位来切断SHA-256或SHA-512。在64位系统上,SHA-512实际上要快30%到60%。除了较小的摘要长度(128位摘要=针对原像的128位强度和针对碰撞的64位强度),安全性没有降低。
另一种选择是SHAKE256。 NIST将SHA-2替换中的4个固定长度丢弃编码为SHA3-224,SHA3-256,SHA3-384,SAH3-512,但基础算法支持任意位长度。术语SHAKE256适用于用于任意大小输出的基础算法。使用SHAKE256可以输出128位甚至179位。
我仍然会考虑使用SHA-2重新编写文件存储区以获取256位标识符,而所有文件都来自可靠来源,然后在接受可能不值得信任的数据之前迁移到所有SHA-256系统。