java - 从哈希中查找消息?

标签 java c hash md5

我最近了解到 MD5 并不安全,因为它可以在很短的时间内被追踪。

如果我只给出固定的 512 位数据作为输入。 MD5 将给出 128 位哈希值(32 个十六进制值)

如果 MD5 有缺陷,那么在给定 128 位哈希值的情况下,任何人都可以建议重建 512 位输入的最佳方法吗?

(旁注:我非常想实现这个。对于速度而言,C++ 是更好的选择,而对于其内置的安全包,Java 是更好的选择吗?)

最佳答案

有 2 ** 384(大约 4x10**115)个不同的 512 位 block 散列到相同的 MD5。即使在原则上也是不可能逆转的。

但是,有可能找到那些 4x10**115 block 中的一个,它生成的 MD5 与您想要的 block 相同,那就是 为什么它被认为是不安全的。例如,如果您将一个文件连同 MD5 哈希值一起发布到网络上以验证其完整性,则黑客可能能够将其替换为具有相同哈希值的不同文件。

使用 SHA256 等更安全的哈希值,这也是不可能的。

关于java - 从哈希中查找消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565184/

相关文章:

java - HashMap 的 XMLAdapter

用于读取电子邮件和创建 JIRA 票证的 Java 守护进程?

c - SCons - 为库中的所有对象添加依赖项

c getline 跳过空行

database - 在密码加密中使用随机盐?

c - 如何在 15 和 18 处处理此警告 ."warning: array subscript has type ‘char’ [-Wchar-subscripts]”

使用前进/后退按钮支持添加 URL 值的 jQuery 最佳实践

java - 从 S3 存储桶获取文件大小

java - 如何为旋转的陀螺制作动画?

c - c崩溃有多严重?