请让我知道解密的等效代码。我使用这种编码方法加密了密码,现在我想解密。
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(password.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
byte hashedBytes[] = (new String(digest.digest(), "UTF-8")).getBytes();
System.out.println(encoder.encode(hashedBytes))
答案 0 :(得分:1)
简短的回答是你不能。 MD5是一个哈希值,这意味着数据"加密"用它理论上不能转回原始数据。它是一种单向函数,(理论上)不能反转。阅读cryptographic hash functions以了解更多信息。
如果你有一台机器通过返回书中的页数来处理书籍就好了。你可以给它买一本书,然后你会得到一个价值,但只给出机器的输出,就不可能知道输入了什么。
更多详情:
从维基百科页面获取加密哈希函数:
加密哈希函数是一个哈希函数,它接收任意数据块并返回一个固定大小的位串,即加密哈希值,这样任何(偶然或有意)的数据更改都将(具有很高的概率) )更改哈希值。
理想的加密哈希函数有四个主要属性:
- 很容易计算任何给定消息的哈希值
- 生成具有给定哈希值的消息
是不可行的- 修改邮件而不更改哈希
是不可行的- 找到具有相同哈希值的两个不同消息是不可行的。
注意项目符号第2点。这意味着它实际上无法从哈希中生成您的密码。
当然,MD5在加密方面被认为是不安全的,但它仍然意味着从散列到输入的一般方法并不存在。