如何反转此方法的输出?

时间:2013-10-19 15:52:21

标签: java encryption base64 md5 sha1

如何从此方法中反转此输出? (这样我就可以看到明文了) 我没有看到任何密钥被使用。

    public String encrypt(String plaintext) {
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("SHA");
    } catch (NoSuchAlgorithmException e) {
    }
    try {
        md.update(plaintext.getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
    }
    byte raw[] = md.digest();
    String hash = (new BASE64Encoder()).encode(raw);
    return hash;
}

1 个答案:

答案 0 :(得分:6)

你做不到。 SHA系列是哈希算法;也就是说,它们是产生哈希或消息摘要的单向加密算法。没有办法回来。散列是来自任何长度的消息的固定长度结果,其设计目标是找到产生相同散列值的两个消息在计算上是不可行的;因此,对于所有意图,哈希可被视为识别消息。但是你无法返回并从中检索消息。

哈希是未加密的。可以使用它们创建键控构造,例如消息验证代码或MAC。

该方法实际上命名不佳 - 这本身并不是“加密”。