如何反转此方法的输出?

use*_*147 2 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;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*d M 6

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

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

该方法实际上命名不佳 - 这本身不是"加密".