Java加密和解密

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高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宇0926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值