Java加密和解密
程序员文章站
2024-03-13 23:05:05
...
1.使用异或进行加密和解密操作
对于一个二进制数和同一个二进制数进行异或操作两次就会得到原来的数
a 97 0110 0001
b 1 0000 0001
第一次 0110 0001
0000 0001
加密完成 0110 0000
0000 0001
解密完成 0110 0001
public static String xor(String base){
// 将字符串转换成字符数组
char[] chars = base.toCharArray();
// 进行加密操作
for (int i = 0;i < chars.length;i ++)
chars[i] = (char)(chars[i] ^ a);
// 返回加密后的密文
return new String(chars);
}
加密和解密是可逆的 安全性较低
2.Base64进行加密和解密
Base64是JDK自带的加密解密工具
// base64加密
public static String base64encode(byte[] input) throws Exception {
Base64.Encoder encoder = Base64.getEncoder();
return encoder.encodeToString(input);
}
// base64解密
public static byte[] base64decode(String code){
Base64.Decoder decoder = Base64.getDecoder();
return decoder.decode(code);
}
Base64 加密时输入字节数组返回字符串,解密时输入字符串返回字节数组
3.使用MD5和sha256进行加密和解密
需要引入commons-codec-jar
// 使用MD5进行加密 不可逆 速度较快 返回一个16进制表示的字符串
public static String md5encode(byte[] input){
return DigestUtils.md5Hex(input);
}
// 使用sha256进行加密 不可逆 安全性较高 返回一个16进制表示的字符串
public static String sha256encode(byte[] input){
return DigestUtils.sha256Hex(input);
}
MD5加密速度较快,安全性较异或和Base64操作高
sha256加密速度较MD5慢,安全性较MD5高