什么是等效的解密代码

时间:2014-05-23 03:25:12

标签: java security encryption passwords decode

请让我知道解密的等效代码。我使用这种编码方法加密了密码,现在我想解密。

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))

1 个答案:

答案 0 :(得分:1)

简短的回答是你不能。 MD5是一个哈希值,这意味着数据"加密"用它理论上不能转回原始数据。它是一种单向函数,(理论上)不能反转。阅读cryptographic hash functions以了解更多信息。

如果你有一台机器通过返回书中的页数来处理书籍就好了。你可以给它买一本书,然后你会得到一个价值,但只给出机器的输出,就不可能知道输入了什么。


更多详情:

从维基百科页面获取加密哈希函数:

  

加密哈希函数是一个哈希函数,它接收任意数据块并返回一个固定大小的位串,即加密哈希值,这样任何(偶然或有意)的数据更改都将(具有很高的概率) )更改哈希值。

     

理想的加密哈希函数有四个主要属性:

     
      
  • 很容易计算任何给定消息的哈希值
  •   
  • 生成具有给定哈希值的消息
  • 是不可行的   
  • 修改邮件而不更改哈希
  • 是不可行的   
  • 找到具有相同哈希值的两个不同消息是不可行的。
  •   

注意项目符号第2点。这意味着它实际上无法从哈希中生成您的密码。

当然,MD5在加密方面被认为是不安全的,但它仍然意味着从散列到输入的一般方法并不存在。