欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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高