Base64 Java对一个string进行编码和解码

我想将一个string编码到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); } } 

任何关于如何实现这个想法?

谢谢…

您可以使用以下方法,

 // encode data on your side using BASE64 byte[] bytesEncoded = Base64.encodeBase64(str .getBytes()); System.out.println("ecncoded 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)); 

希望这回答你的疑问。

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

接受的答案使用Apache Commons软件包,但这是我使用javax.xml.bind.DatatypeConverter – 至less可以在Java 6上使用:

 import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; public class EncodeString64 { public static void main(String[] args) throws UnsupportedEncodingException { String str = "77+9x6s="; // encode data using BASE64 String encoded = DatatypeConverter.printBase64Binary(str.getBytes()); System.out.println("encoded value is \t" + encoded); // Decode data String decoded = new String(DatatypeConverter.parseBase64Binary(encoded)); System.out.println("decoded value is \t" + decoded); System.out.println("original value is \t" + str); } } 

更好的方法是尝试/赶上编码/解码步骤,但希望你能明白。

对于Spring用户,Spring Security在org.springframework.security.crypto.codec包中有一个Base64类,也可以用于Base64的编码和解码。 防爆。

  public static String base64Encode(String token) { byte[] encodedBytes = Base64.encode(token.getBytes()); return new String(encodedBytes, Charset.forName("UTF-8")); } public static String base64Decode(String token) { byte[] decodedBytes = Base64.decode(token.getBytes()); return new String(decodedBytes, Charset.forName("UTF-8")); } 

以下是一个很好的解决scheme –

 import android.util.Base64; String converted = Base64.encodeToString(toConvert.toString().getBytes(), Base64.DEFAULT); String stringFromBase = new String(Base64.decode(converted, Base64.DEFAULT)); 

而已。 单行编码和解码。

 import javax.xml.bind.DatatypeConverter; public class f{ public static void main(String a[]){ String str = new String(DatatypeConverter.printBase64Binary(new String("user:123").getBytes())); String res = DatatypeConverter.parseBase64Binary(str); System.out.println(res); } }