AES是一種對稱的加密算法,可基于相同的密鑰進行加密和解密。Java采用AES算法進行加解密的邏輯大致如下:
- 生成/獲取密鑰
- 加/解密
1.1生成密鑰
密鑰的生成是通過KeyGenerator來生成的。通過獲取一個KeyGenerator實例,然后調用其generateKey()方法即可生成一個SecretKey對象。
1.2密鑰的存儲
密鑰SecretKey里面最核心的內容就是其中的密鑰對應的字節數組,可以通過SecretKey的getEncoded()方法獲取。然后把它存儲起來即可。最簡單的方式就是直接寫入一個文件中。
1.3獲取存儲的密鑰
獲取存儲的密鑰的核心是把密鑰的字節數組轉換為對應的SecretKey。這可以通過SecretKeySpec來獲取,其實現了SecretKey接口,然后構造參數里面將接收密鑰的字節數組。
1.4加解密
Java采用AES算法進行加解密的過程是類似的,具體如下:
1、指定算法,獲取一個Cipher實例對象
2、生成/讀取用于加解密的密鑰
3、用指定的密鑰初始化Cipher對象,同時指定加解密模式,是加密模式還是解密模式。
4、通過Cipher的dofinal(byte[] var1)進行最終的加解密操作。
"AES/CBC/PKCS5Padding":"算法/模式/補碼方式"
"DES/ECB/PKCS5Padding":"算法/模式/補碼方式"
1、是DES,不是3DES。
2、分組模式是ECB,所以不需要初始化向量。
3、填充模式是PKCS5Padding。