无法解析符号BASE64Decoder(Java版本9.0.1)

时间:2018-03-17 19:56:37

标签: java base64 des

当我以Base64格式返回加密或解密的字符串时,它可以t resolve BASE64Encoder()and BASE64Dencoder()`。我该如何解决?

import javax.crypto.*;
import java.io.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

class DesEncrypter {
    Cipher ecipher;
    Cipher dcipher;

public DesEncrypter(SecretKey key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException {
    ecipher = Cipher.getInstance("DES");
    dcipher = Cipher.getInstance("DES");
    ecipher.init(Cipher.ENCRYPT_MODE, key);
    dcipher.init(Cipher.DECRYPT_MODE, key);
}

public String encrypt(String str) throws UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException {
    byte[] utf8 = str.getBytes("UTF8");
    byte[] enc = ecipher.doFinal(utf8);
    return new sun.misc.BASE64Encoder().encode(enc);
}

public String decrypt(String str) throws IOException, IllegalBlockSizeException, BadPaddingException {
    byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
    byte[] utf8 = dcipher.doFinal(dec);
    return new String(utf8, "UTF8");
}

}

3 个答案:

答案 0 :(得分:0)

尝试使用java9,而不是sun.misc ......:

https://docs.oracle.com/javase/9/docs/api/java/util/Base64.Decoder.html

答案 1 :(得分:0)

一般情况下,不应使用sun.misc。这些类是JDK的内部类,可以使用新版本的Java删除(如此处所示)。

我建议使用像Apache Codecs这样的第三方库。有许多实用程序类可以使您无需执行您列出的任何代码。

网站https://commons.apache.org/proper/commons-codec/

文档https://commons.apache.org/proper/commons-codec/archives/1.11/apidocs/org/apache/commons/codec/binary/Base64.html

答案 2 :(得分:0)

今天,当我在Intellij上运行JDK 8时,我遇到了同样的问题,而maven任务无法正确编译项目,给了我同样的错误。解决方法是:我在我的环境变量上设置了JDK10文件夹...只是更改为JDK8,一切都编译好了。