当我以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");
}
}
答案 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这样的第三方库。有许多实用程序类可以使您无需执行您列出的任何代码。
答案 2 :(得分:0)
今天,当我在Intellij上运行JDK 8时,我遇到了同样的问题,而maven任务无法正确编译项目,给了我同样的错误。解决方法是:我在我的环境变量上设置了JDK10文件夹...只是更改为JDK8,一切都编译好了。