编码和解码字符串的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; 
} 

感谢提前

+1

你有进口的Base64类? – Jens

+0

如果此应用有时在非UTF-8平台(如Windows)上运行,请使用'getBytes(“UTF-8”)'。 –

帮助检查进口,并确保您导入:

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);