JAVA中Base64加密与解密
引言
为了安全的进行数据传输,就需要对数据进行加密与解密操作,Base64就是JAVA提供的加解密处理工具。
背景知识
Base64是一种利用64个可打印字符来表示二进制数据的算法,也是在网络传输中较为常见的一种加密算法。从JDK1.8版本开始,在java.util中提供了Base64的工具类,其中有两个内部类实现数据加密和解密操作。
【数据加密】
对象获取方法:
数据加密处理:
【数据解密】
对象获取方法:
数据加密处理:
最简单的加密解密操作
代码块:
private static final String str = "abcdefghigklmnopqrstuvwxyz1234567890";
/*
@name: 最简单的加密解密
@msg:
@param {type}
@return:
/
public static void simpleRun() {
String encodiString = new String(Base64.getEncoder().encode(str.getBytes()));
System.out.println(encodiString);
encodiString = Base64.getEncoder().encodeToString(str.getBytes());
System.out.println(encodiString);
String oldString = String.valueOf(Base64.getDecoder().decode(encodiString));
System.out.println(oldString);
oldString = new String(Base64.getDecoder().decode(encodiString));
System.out.println(oldString);
}
输出:
//加密数据
YWJjZGVmZ2hpZ2tsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkw
YWJjZGVmZ2hpZ2tsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkw
//解密数据
[B@70dea4e
abcdefghigklmnopqrstuvwxyz1234567890
由此看出,加密操作有两种写法,而解密的时候取不到值。
使用“盐”值进行多次加密解密
代码块:
private static final String str = "abcdefghigklmnopqrstuvwxyz1234567890";
/*
@name: 使用“盐”值进行多次加密解密
@msg:
@param {type}
@return:
/
public static void mRun() {
String eString = encode(str);
System.out.println(eString);
String dString = decode(eString);
System.out.println(dString);
}
private static final String SALT = "neusoft";
private static final int REPEAT = 5;
private static String encode(String string) {
String temp = string + "{" + SALT + "}";
byte[] data = temp.getBytes();
for (int i = 0; i < REPEAT; i++) {
data = Base64.getEncoder().encode(data);
}
return new String(data);
}
private static String decode(String string) {
byte[] data = string.getBytes();
for (int i = 0; i < REPEAT; i++) {
data = Base64.getDecoder().decode(data);
}
return new String(data).replaceAll("\\{\\w+\\}", "");
}
}
输出:
//利用“盐”值加密5遍数据
VmpGYWExTXlSbk5qUldoWFlsUkdhRlJYTVc5a01XUnhVMnBDYWsxcmNGbFViR2hoWVd4T1JsZHFWbHBsYXpWVVZGWmtVMlJXY0VWVmJYaFlVbnByTUZaR1pIZFVhekZHVGxaV1dGWkZOVkZWYTJRd1RURndWVk5VUm1sU01VcGFWa2MxWVZsWFNuTlRWRlU5
//解密数据
abcdefghigklmnopqrstuvwxyz1234567890
本程序基于Base64的功能实现了一个自定义加密解密程序,使用“盐”值多次加密后确保了密文数据的可靠性。在实际开发中如果不对外公布“盐”值内容和加密次数,就可以在较为安全的环境下进行数据传输。
>所学所得,如有不正确之处还请留言指正。
>个人博客永久链接: [https://neusoft.me/ziyuan/java/2020/05/03/54/]