相信很多小伙伴都使用过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;
public class Base64Util {
/**
* 将字符串 s 进行 BASE64 编码
*/
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 进行解码
*/
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;
}
}
public static void main(String[] args) {
System.out.println(Base64Util.encode("哈哈"));
System.out.println(Base64Util.decode("uf65/g=="));
}
}