java base64编码 加密和解密(切记注意乱码问题)

时间:2021-07-05 16:24:04

 BASE64 编码是一种常用的字符编码,在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码。

切记:下面两处编码必须一致。

     获取字节流时  res = new sun.misc.BASE64Encoder().encode(s.getBytes("GBK"));

字节流转换字符串时:      return new String(b,"GBK");

完整代码如下:

package com.util;

import java.io.UnsupportedEncodingException;

import sun.misc.BASE64Decoder;

/**
* base64 编码、解码util
*
* @author lifq
* @date 2015-3-4 上午09:23:33
*/
public class Base64Util {
/**
* 将 s 进行 BASE64 编码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:02
*/
public static String encode(String s) {
if (s == null)
return null;
String res = "";
try {
res = new sun.misc.BASE64Encoder().encode(s.getBytes("GBK"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
} /**
* 将 BASE64 编码的字符串 s 进行解码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:26
*/
public static String decode(String s) {
if (s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b,"GBK");
} catch (Exception e) {
return null;
}
}
/**
*
* @return void
* @author lifq
* @date 2015-3-4 上午09:23:17
*/
public static void main(String[] args) {
System.out.println(Base64Util.encode("哈哈"));
System.out.println(Base64Util.decode("uf65/g==")); } }

限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

资料传送门: https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

关注下方公众号即可免费领取:

java base64编码 加密和解密(切记注意乱码问题)