2

我需要一个加密安全的散列函数,它具有与 MD5 相似的属性,即:128 位大小和速度快。由于 MD5 本身现在已经很糟糕了,我想使用另一个哈希。这些天,SHA1 实际上比 MD5 快,至少在我的计算机上(试试openssl speed md5 sha1你的),所以我想我可以从 SHA1 输出中取出前 128 位并完成。但是,我不确定安全和碰撞的影响。

  1. 这样的散列函数是否比真正的 128 位散列函数更不安全?
  2. 这样的散列函数是否比真正的 128 位散列函数更容易发生冲突?

ps 也欢迎关于良好快速 128 位哈希替代方案的替代建议,即使它们有点超出原始问题的范围。

4

1 回答 1

3

是的,您只需从 SHA1 输出中取出前 128 位即可完成。

如果您真的担心通过散列为短输入分配位,请在输入后放置一些填充数据或盐。这将有助于确保输入位在整个散列结果中的均匀分布。

于 2013-07-14T10:36:21.827 回答