1.使用RSA 加密解密 www.cnblogs.com/hongdanni/p…
2.SHA256(以及所有SHA系列算法)本身就是一种“单向散列函数”(One-way Hash Function),从数学原理上就不支持解密。
SHA256的正确用途是什么?
Java(或其他任何语言)实现的SHA256算法,都是对这个数学公式的具体编码。只要算法标准统一,结果就一样。但没有任何官方或非官方的“解密”函数,因为从算法设计之初就没打算让你逆向。
- 1.密码存储(最常用):
你不存储用户的明文密码,而是存它的SHA256值。
- 2.数据完整性校验:
下载大文件时,对比官方提供的SHA256值,确保文件在传输中没有被篡改。
MD5 能“被破解”,不是因为它能被解密,而是因为它算得太快、输出太短,导致黑客可以轻松建立“密码-哈希值”对照表来撞库。
-
- MD5 的“破解”本质是“碰撞”与“查表”
理论层面(数学上不可逆) :MD5 的输出只有 128 位(32 个十六进制字符),而输入可以是无限长的。这意味着有无穷多个不同的原文,能计算出同一个 MD5 值(这叫“碰撞”)。比如,
A和B都可能算出一个同样的值(只是举例)。所以,你无法确定一个哈希值背后“唯一”的原文。
- MD5 的“破解”本质是“碰撞”与“查表”
理论层面(数学上不可逆) :MD5 的输出只有 128 位(32 个十六进制字符),而输入可以是无限长的。这意味着有无穷多个不同的原文,能计算出同一个 MD5 值(这叫“碰撞”)。比如,
-
- 实际破解(彩虹表与撞库) :网上所谓的“MD5 解密网站”,其实是一个巨大的键值对数据库(彩虹表) 。它们预先计算了海量常见密码(如
123456、admin、password)的 MD5 值。当你输入e10adc3949ba59abbe56e057f20f883e时,它们直接在库里查,发现对应123456,就“破解”了。
- 实际破解(彩虹表与撞库) :网上所谓的“MD5 解密网站”,其实是一个巨大的键值对数据库(彩虹表) 。它们预先计算了海量常见密码(如