我想只使用SHA256,然后只使用结果的前两个字节这种方法有什么问题吗?
注意:这里关注的不是恶意攻击,而是确保对随机位翻转的最佳保护。

最佳答案

任何满足strict avalanche criterion的散列(即,如果输入中有任何位被翻转,则输出中的每个位将以50%的概率被翻转)都可以这样使用,并且包括常用的每个加密散列,包括SHA512使用非常短的散列有安全隐患,但如果它们真的不相关,如您所说,您可以自由选择可用的最快散列(可能是MD5)。
不过,由于短散列将特别容易受到生日悖论的影响,因此无论如何,请考虑使用长散列如果生成的散列太多,16位与256位之间的差异很大,那么即使没有恶意攻击者,也会遇到重复项。

09-28 02:13