【问题标题】:Encode and Decode String Java编码和解码字符串 Java
【发布时间】:2026-02-02 12:25:01
【问题描述】:

我有这段代码,我试图在 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;
}

提前感谢您的帮助

【问题讨论】:

  • 你有导入Base64类吗?
  • 如果此应用有时在非 UTF-8 平台(如 Windows)上运行,请使用 getBytes("UTF-8")

标签: java android string encode


【解决方案1】:

检查您的导入并确保您正在导入:

import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;

我的 IDE 发现了几十个名为 Base64 的类,因此即使名称匹配,您也完全有可能导入了错误的类。

另请注意,java.util.Base64 类是在 java 1.8 中添加的,因此如果您使用的是旧版本,它将不可用。

【讨论】:

    【解决方案2】:

    你可以使用 org.apache.commons.codec.binary.Base64

    import org.apache.commons.codec.binary.Base64;
    ...
    byte[] encodedBytes = Base64.encodeBase64(byteToEncode);
    

    用于解码

    byte[] bytes = Base64.decodeBase64(base64String);
    

    【讨论】: