2

我怎样才能从这个方法中反转这个输出?(这样我才能看到明文)我没有看到任何正在使用的密钥。

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

1 回答 1

6

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

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

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

于 2013-10-19T15:54:07.690 回答