严格意义上来说,JDK中的Base64不属于正儿八经的加密,只是为了不让密码过于明显而已。
一、JDK1.7以前
JDK1.7加密后的密码用JDK1.8的进行解密会失败,原因是JDK1.7加密的内容后多了一行空白。
java中,Base64在JDK1.7以前,有自带的加密解密类,具体的实现原理自行百度。JDK中Base64的实现在JDK1.7之前是没有对外的公共接口的,只有一个非标准实现,位于sun.misc包中,提供BASE64Encoder类和BASE64Decoder类。由于是不对外,所以不建议使用,并且后续JDK版本可能会去掉对这两个类的支持。
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
1、加密
/**
* 将密码 加密
* @param password 密码明文
* @param charset 编码格式
* @return 加密后的密码
*/
public static String encryptByBase64(String password, String charset) {
String encryptPwd = null;
byte[] bytes = null;
try {
bytes = password.getBytes(charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (bytes !=