cryptography - 使用哈希函数的前 N ​​位得到 N 位哈希

标签 cryptography md5 sha1 hash-collision

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

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

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

最佳答案

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

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

关于cryptography - 使用哈希函数的前 N ​​位得到 N 位哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17638593/

相关文章:

java - Python 和 Java 之间的 RSA 加密填充问题

c# - System.Security.Cryptography 中不存在 MD5 类

java - 在 Java 中提供各种哈希算法(MD5、SHA1、SHA256 等)的库?

php - WS-Security php 中 PasswordDigest 的工作算法

python - 解密 SSL 预主 key

java - 加密的 AES key 太大,无法使用 RSA (Java) 解密

python - 带模拟转换的音频加密

python - 使用 MD5 和 SQL 进行服务器授权

c - Objective-C : SHA1

git - 是否有重复的 SHA 提交?