Base64 Java 编码和解码字符串

2022-08-31 06:41:02

我想将字符串编码成并通过套接字传输,然后将其解码回来。base64

但是在解码之后,它给出了不同的答案。

以下是我的代码,结果是“77 + 9x6s =”

import javax.xml.bind.DatatypeConverter;

    public class f{

       public static void main(String a[]){

          String str = new String(DatatypeConverter.parseBase64Binary("user:123"));
          String res = DatatypeConverter.printBase64Binary(str.getBytes());
          System.out.println(res);
       }
    }

关于如何实现这一点的任何想法?


答案 1

您可以使用以下方法:

import org.apache.commons.codec.binary.Base64;

// Encode data on your side using BASE64
byte[] bytesEncoded = Base64.encodeBase64(str.getBytes());
System.out.println("encoded value is " + new String(bytesEncoded));

// Decode data on other side, by processing encoded data
byte[] valueDecoded = Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded));

希望这能回答您的疑问。


答案 2

Java 8 现在支持 BASE64 编码和解码。可以使用以下类:和 。java.util.Base64java.util.Base64.Encoderjava.util.Base64.Decoder

用法示例:

// encode with padding
String encoded = Base64.getEncoder().encodeToString(someByteArray);

// encode without padding
String encoded = Base64.getEncoder().withoutPadding().encodeToString(someByteArray);

// decode a String
byte [] barr = Base64.getDecoder().decode(encoded);