環境: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);//解密