为了账号安全,请及时绑定邮箱和手机立即绑定

Base64 Java编码和解码字符串

Base64 Java编码和解码字符串

红颜莎娜 2019-10-15 15:34:26
我想将一个字符串编码成一个字符串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);       }    }关于如何实现这一点的任何想法?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以使用以下方法:


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

希望这能回答您的疑问。


查看完整回答
反对 回复 2019-10-15
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

针对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编码/解码步骤,但希望您能理解。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 846 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信