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