hutool-crypto 依赖 Aes加密,解密
环境:springboot 2.4.0
1.添加依赖
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-crypto</artifactId> <version>5.5.4</version> </dependency>
2.初始化Aes对象,四个参数
2.1 Mode 枚举参数 选择加密模式
public enum Mode { NONE, //CBC:基于IV的加密方案,该模式作为概率加密方案是安全的,假设随机IV,实现与随机比特的不可区分。 如果IV仅仅是nonce,则不能实现机密性,也不是如该标准错误建议的那样,在该方案使用的相同密钥下加密的nonce。 Ciphertexts具有很强的可塑性。 没有选择的密文攻击(CCA)安全性。 对于许多填充方法,在存在正确填充的oracle的情况下,机密性将被取消。 加密从本质上是连续的低效。 模式的隐私安全属性被广泛使用,导致频繁的误用。 可以用作CBC-MAC算法的构建块。 我认为CTR模式没有重要优势。 CBC, //CFB:基于IV的加密方案,该模式作为概率加密方案是安全的,假设随机IV,实现与随机比特的不可区分。 如果IV是可预测的,也不是由在该方案使用的相同密钥下加密的随机数制作,如标准错误地建议的那样,则不能实现机密性。 Ciphertexts是可塑的。 没有CCA安全性。 加密从本质上是连续的低效。 方案取决于参数s,1≤s≤n,通常s = 1或s = 8.对于需要一个阻塞调用仅处理s位而言效率低。 该模式实现了一个有趣的“自同步”属性; 在密文中插入或删除任意数量的s位字符只会暂时中断正确的解密。 CFB, //CTR:基于IV的加密方案,该模式实现了与假设nonce IV的随机位的不可区分性。 作为基于安全随机数的方案,该模式还可以用作概率加密方案,具有随机IV。 如果nonce在加密或解密时被重用,则完全失去隐私。 模式的可并行性通常使其在某些设置中比其他机密性模式更快。 用于经过身份验证的加密方案的重要构建块。 总的来说,通常是实现仅隐私加密的最佳和最现代的方式。 CTR, CTS, ECB, OFB, PCBC; private Mode() { } } 默认 Mode.NONE
2.2 Padding 枚举参数
public enum Padding { NoPadding, ZeroPadding, ISO10126Padding, OAEPPadding, PKCS1Padding, PKCS5Padding, SSL3Padding; private Padding() { } }
2.3 key byte[] 随机值
2.4 iv byte[] 随机值
3.初始化
Aes aes = new Aes(Mode.CBC,Padding.PKCS5Padding,key,iv); aes.encrypyHex(data);//加密 aes.decryptStr(dataEncrypt);//解密