今天学习了Base64类的用法,它主要可以用来对字节进行加密。
使用Base64类的Encoder方法可以对字符串进行加密,Decoder方法可以对加密的字符串进行解密。单纯的使用这两个方法并不能取得加密的效果,因为这个算法是公开的。比较安全的方法是使用此类和其他方法配合使用。例如多次加密,加盐值等等,这样可以提高安全性,增加解密难度。
举个例子,下面的代码使用多次加密和加盐值的方法对字符串进行了加密。
package javademo;
import java.util.Base64;
public class JavaDemo {
public static void main(String[] args) {
String code = "123456789";
String coded = TestCoder.enCode(code);
System.out.println(coded);
System.out.println(TestCoder.deCode(coded));
}
}
class TestCoder {
static final int count = 5;// 加密次数
static final String salt = "{salt}";// 盐值
/**
* 加密
*
* @param str 要加密的字符串
* @return 加密后的字符串
*/
public static String enCode(String str) {
str += salt;
for (int i = 0; i < count; ++i) {
str = Base64.getEncoder().encodeToString(str.getBytes());
}
return str;
}
/**
* 解密
*
* @param str 要解密的字符串
* @return 解密后的字符串
*/
public static String deCode(String str) {
for (int i = 0; i < count; ++i) {
str = new String(Base64.getDecoder().decode(str));
}
return str.replaceAll("\\{\\w+\\}", "");
}
}
运行后的结果为:
密文是:VmtaYVUxTnRWbkpPVlZaWFZrVndVRnBYTVdwTlZuQlZWR3M1YUZJd2NFcFdWM0J5VUZFOVBRPT0=
明文是:123456789