【问题标题】:Using N first bits of a hash function to have an N-bit hash使用散列函数的 N 位进行 N 位散列
【发布时间】:2013-07-12 09:27:12
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么要坚持使用 128 位哈希?
  • 截断散列是很正常的事情,这样做是为了生成加密密钥、节省带宽,或者有时将数据填充到静态大小的字段(数据库、预先存在的文件格式等) )。
  • 您可能会发现this 很有帮助。

标签: cryptography md5 sha1 hash-collision


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 2017-02-08
    • 2011-01-27
    • 1970-01-01
    • 2017-05-25
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多