JDK1.8版本以来,新增了加密的API,而加密的算法有很多种,有的能加密后再解密,还有的只能单向加密(MD5),而这里要用到的是加密后还能反解密的Base64
Base64的加密解密核心方法
public byte[] encode(byte[] src) ;–加密
public byte[] decode(byte[] src) ;–解密
因为Base64的加密API是公开的,所以如果直接对其加密是不安全的,因此在实际开发的时候,通常都是混入盐值(掺杂一些字符串之类的),然后反复加密几次,甚至是采用两种乃至更多的加密方式来保证数据的安全
package chenfu.util;
import java.util.Base64;
/**
* @Author: romantic_ke@163.com
* @Description:
* @Date: 2019/3/2 19:08
*/
public class StringUtil {
// 盐值
private final static String SALT = "{salt}";
// 加密次数
private final static Integer TIMES = 3;
/**
* 加密方法
*
* @param pwd
* @return
*/
public static String encode(String pwd) {
pwd += SALT;
byte p[] = pwd.getBytes();
for (int i = 0; i < TIMES; i++) {
p = Base64.getEncoder().encode(p);
}
return new String(p);
}
/**
* 解密方法
*
* @param pwd
* @return
*/
public static String decode(String pwd) {
byte[] bytes = pwd.getBytes();
for (int i = 0; i < TIMES; i++) {
bytes = Base64.getDecoder().decode(bytes);
}
return new String(bytes).replaceAll("\\{\\w+\\}", "");
}
public static void main(String[] args) {
String string = "臣服Romantic";
String encode = encode(string);
System.out.println(encode);
String decode = decode(encode);
System.out.println(decode);
}
}