反转给定(小)输入长度的 SHA-1 或 MD5,无需蛮力
Reversing SHA-1 or MD5 given (small) input length without brute force
我记得听说SHA-1发现了一些弱点,这使得在给定输出哈希的情况下更容易找到明文输入。我也知道MD5已被确定为在某些应用中很弱。我正在尝试创建一个程序来演示两种方法的不同复杂性:暴力搜索以查找输入,以及利用 SHA-1 或 MD5 中的弱点来查找输入。
明文输入的长度为 <4,并且仅由 A-Z 组成,因此暴力破解并非不切实际。
我的问题是:
是否有C/C++实施通过利用弱点来逆转SHA-1?
是否有 C/C++ 实现通过利用该弱点来逆转 MD5?
我目前的感觉是,任何利用弱点的方法都不会有足够的时间复杂度差异来证明如此小的样本量的好处。
不,这是不可能的。虽然MD5和SHA-1确实存在一些弱点,但它们通常不允许这种形式的原像攻击 - 大多数已知的弱点都涉及碰撞对的构建。
有关 SHA-1 漏洞利用的非常详细的概述,请参阅
https://hashcat.net/p12/js-sha1exp_169.pdf
对于如此小的输入示例,您可以构建一个内存中彩虹表,其中包含所有可能的输入值及其哈希值(以毫秒为单位)。 我怀疑你会使用漏洞利用与蛮力来衡量任何显着差异。
此外,对于如此小的输入范围,碰撞极不可能(因此几乎肯定不会有碰撞对)。
相关文章:
- 在Javascript和C++中计算MD5哈希的不同结果
- Generate boost::uuids::uuid from boost::compute::detail::sha
- C++ SHA-512 的实施不起作用
- 如何在 C++ 中从 GUID 生成 SHA-1 字节数组
- md5 inC++ with UTF16LE
- 使用OpenSSL的SHA 512 HMAC消息身份验证的问题
- 为什么当我在MD5 Hash中转换相同的C 字符串时,每次都会获得不同的输出
- C++ 中的 MD5 实现返回不正确的摘要
- SHA-256的双分部分的十六进制表示
- 如何使用Boost计算文件的MD5
- MD5哈希的密码盐字符串的格式是什么?
- 阻止基于md5哈希执行特定的.exe文件
- Win32 MD5哈希器的奇怪行为
- 为什么如果我启动几次程序,我的 md5 总是不同的
- Android NDK 获取二进制文件的 md5
- 如何使用openssl/sha.h对文本文件进行SHA256哈希处理
- CMake检查下载文件的哈希值(MD5/SHA256)
- 如何在openssl中从SHA切换到SHA-1
- 如何计算大文件的 MD5 和 SHA 校验和
- 反转给定(小)输入长度的 SHA-1 或 MD5,无需蛮力