【问题标题】:What is the quivalent decrypt code [duplicate]什么是等效解密码[重复]
【发布时间】:2014-07-12 07:08:22
【问题描述】:

请告诉我等效的解密代码。我已经使用这种编码方法加密了我的密码,现在我想解密。

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

【问题讨论】:

标签: java security encryption passwords decode


【解决方案1】:

简短的回答是你不能。 MD5是一个散列,这意味着用它“加密”的数据理论上不能变回原始数据。这是一个单向函数,(理论上)不能逆转。阅读cryptographic hash functions以了解更多信息。

这就像你有一台机器通过返回书的页数来处理书。你可以给它喂一本书,你会得到一个值回来,但只考虑机器的输出,不可能知道输入了什么。


更多细节:

来自加密哈希函数的维基百科页面:

加密散列函数是一个散列函数,它采用任意数据块并返回一个固定大小的位串,即加密散列值,这样对数据的任何(意外或有意)更改都会(以非常高的概率) 更改哈希值。

理想的密码散列函数有四个主要属性:

  • 很容易计算任何给定消息的哈希值
  • 生成具有给定哈希的消息是不可行的
  • 在不改变哈希的情况下修改消息是不可行的
  • 不可能找到两条具有相同哈希的不同消息。

注意要点 2。这意味着实际上不可能从哈希中生成您的密码。

诚然,MD5 在密码学上被认为是不安全的,但这仍然意味着从哈希到输入没有通用的方法。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2013-03-24
    • 2016-02-22
    • 2019-05-16
    • 2017-11-08
    • 2011-03-20
    • 2012-12-20
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多