在新系统中,我们需要一个单向哈希算法来从二进制输入(例如一千字节的文本或更大的文本和二进制文件)计算数字签名。这个需求类似于 Scons (构建系统)如何对命令行和源文件进行哈希以及 Git (版本控制系统)如何对文件进行哈希以计算存储/同步的签名。
请注意,Scons 使用的是 MD5,而 Git 使用的是 SHA-1。
尽管 MD5 和 SHA-1 已经被“破解”,但 Scons 和 Git 并没有专门为安全目的使用它们的哈希(例如,不是用来存储密码),因此常规实践仍认为这些算法对于该用途是可以接受的。(当然,这部分是由于早期采用的合理化解释。) 问题:在新系统中,你会使用 SHA256(而不是 MD5 或 SHA-1)作为(非加密/安全性)单向哈希吗?
主要关注点是:
请注意,Scons 使用的是 MD5,而 Git 使用的是 SHA-1。
尽管 MD5 和 SHA-1 已经被“破解”,但 Scons 和 Git 并没有专门为安全目的使用它们的哈希(例如,不是用来存储密码),因此常规实践仍认为这些算法对于该用途是可以接受的。(当然,这部分是由于早期采用的合理化解释。) 问题:在新系统中,你会使用 SHA256(而不是 MD5 或 SHA-1)作为(非加密/安全性)单向哈希吗?
主要关注点是:
- MD5 和 SHA-1 有着长时间的历史。
- SHA256 相对较新(历史不长),但目前似乎被推荐用于新工作(但并不特别需要更强的算法强度)。
- SHA256 计算耗时更长。
- SHA256 产生更长的密钥(这些将用作目录/文件名,并存储在索引文件中),但我认为可以截断生成的密钥(哈希不太强,但应该足够),或者只是假设存储便宜且文件系统可以处理。