AES是一種對(duì)稱的加密算法栗恩,可基于相同的密鑰進(jìn)行加密和解密拐迁。Java采用AES算法進(jìn)行加解密的邏輯大致如下:
- 生成/獲取密鑰
- 加/解密
1.1生成密鑰
密鑰的生成是通過KeyGenerator來生成的扯饶。通過獲取一個(gè)KeyGenerator實(shí)例扮匠,然后調(diào)用其generateKey()方法即可生成一個(gè)SecretKey對(duì)象吠架。
1.2密鑰的存儲(chǔ)
密鑰SecretKey里面最核心的內(nèi)容就是其中的密鑰對(duì)應(yīng)的字節(jié)數(shù)組,可以通過SecretKey的getEncoded()方法獲取蔬啡。然后把它存儲(chǔ)起來即可侥加。最簡單的方式就是直接寫入一個(gè)文件中翩肌。
1.3獲取存儲(chǔ)的密鑰
獲取存儲(chǔ)的密鑰的核心是把密鑰的字節(jié)數(shù)組轉(zhuǎn)換為對(duì)應(yīng)的SecretKey轴总。這可以通過SecretKeySpec來獲取怔檩,其實(shí)現(xiàn)了SecretKey接口,然后構(gòu)造參數(shù)里面將接收密鑰的字節(jié)數(shù)組空猜。
1.4加解密
Java采用AES算法進(jìn)行加解密的過程是類似的绽慈,具體如下:
1、指定算法辈毯,獲取一個(gè)Cipher實(shí)例對(duì)象
2坝疼、生成/讀取用于加解密的密鑰
3、用指定的密鑰初始化Cipher對(duì)象谆沃,同時(shí)指定加解密模式钝凶,是加密模式還是解密模式。
4唁影、通過Cipher的dofinal(byte[] var1)進(jìn)行最終的加解密操作耕陷。
"AES/CBC/PKCS5Padding":"算法/模式/補(bǔ)碼方式"
"DES/ECB/PKCS5Padding":"算法/模式/補(bǔ)碼方式"
1、是DES据沈,不是3DES哟沫。
2、分組模式是ECB锌介,所以不需要初始化向量嗜诀。
3猾警、填充模式是PKCS5Padding。