Java 如何反转此方法的输出?

Java 如何反转此方法的输出?,java,encryption,base64,md5,sha1,Java,Encryption,Base64,Md5,Sha1,如何从该方法中反转此输出?(这样我才能看到明文) 我没看到有人用钥匙 public String encrypt(String plaintext) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException e) { } try { md.update(plaint

如何从该方法中反转此输出?(这样我才能看到明文) 我没看到有人用钥匙

    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;
}

你不能。SHA家族是散列算法;也就是说,它们是产生散列或消息摘要的单向加密算法。没有回头路了。散列是来自任意长度的消息的固定长度结果,其设计目标是在计算上不可能找到产生相同散列值的两条消息;因此,就所有意图而言,散列可以被视为标识消息。但是您不能返回并从中检索消息

散列是无眼的。有一些键控结构可以使用它们生成,例如消息身份验证代码或MAC


该方法的名称实际上很糟糕——这本身并不是“加密”。旁白:您尝试使异常静音(这几乎肯定表明存在致命的编程错误,因此不应被忽略,也不应发生),但如果第一个块失败,则继续使用
md
,它将为
null
,因此,无论如何,您都会因空指针异常而崩溃,或者,如果第二个块失败,您将默默地返回错误的哈希。如果这样做是为了避免检查异常带来的麻烦,请从
catch
块抛出一个更有意义(未检查)的异常。