Base64 Java编码和解码字符串

我想将一个字符串编码成一个字符串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);

       }

    }

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


红颜莎娜
浏览 854回答 3
3回答

繁星淼淼

您可以使用以下方法:import org.apache.commons.codec.binary.Base64;// Encode data on your side using BASE64byte[] bytesEncoded = Base64.encodeBase64(str.getBytes());System.out.println("encoded value is " + new String(bytesEncoded));// Decode data on other side, by processing encoded databyte[] valueDecoded = Base64.decodeBase64(bytesEncoded);System.out.println("Decoded value is " + new String(valueDecoded));希望这能回答您的疑问。

凤凰求蛊

针对Java 11更新:import java.util.Base64;public class Base64Encoding {    public static void main(String[] args) {        Base64.Encoder enc = Base64.getEncoder();        Base64.Decoder dec = Base64.getDecoder();        String str = "77+9x6s=";        // encode data using BASE64        String encoded = enc.encodeToString(str.getBytes());        System.out.println("encoded value is \t" + encoded);        // Decode data        String decoded = new String(dec.decode(encoded));        System.out.println("decoded value is \t" + decoded);        System.out.println("original value is \t" + str);    }}可接受的答案使用Apache Commons包,但这是我使用的方式javax.xml.bind.DatatypeConverter-至少在以下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);    }}更好的方法是进行try/catch编码/解码步骤,但希望您能理解。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java