编码和解码字符串的Java
问题描述:
我有这样的代码,其中我试图编码和解码和字符串在Java中,但我收到编译错误,这里是在代码注释中的错误代码:编码和解码字符串的Java
public static String encrypt(String plainText, SecretKey secretKey)
throws Exception {
byte[] plainTextByte = plainText.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedByte = cipher.doFinal(plainTextByte);
Encoder encoder = Base64.getEncoder(); //ERROR "cannot resolve method"
String encryptedText = encoder.encodeToString(encryptedByte);
return encryptedText;
}
public static String decrypt(String encryptedText, SecretKey secretKey)
throws Exception {
Decoder decoder = Base64.getDecoder(); //ERROR "cannot resolve method"
byte[] encryptedTextByte = (byte[]) decoder.decode(encryptedText);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedByte = cipher.doFinal(encryptedTextByte);
String decryptedText = new String(decryptedByte);
return decryptedText;
}
感谢提前
答
帮助检查进口,并确保您导入:
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
我的IDE发现什么看起来像一个名为Base64
一对夫妇十几类,所以它的电子即使名称匹配,尽管可能导入了错误的类。
另请注意,java.util.Base64
类是在java 1.8中添加的,所以如果你使用的是旧版本,它将不可用。
答
您可以使用org.apache.commons.codec.binary.Base64
import org.apache.commons.codec.binary.Base64;
...
byte[] encodedBytes = Base64.encodeBase64(byteToEncode);
和解码
byte[] bytes = Base64.decodeBase64(base64String);
你有进口的Base64类? – Jens
如果此应用有时在非UTF-8平台(如Windows)上运行,请使用'getBytes(“UTF-8”)'。 –