AES 加密算法
AES(Advanced Encryption Standard) 加密算法是一種對稱加密算法。算法
密鑰長度
AES 加密支持的密鑰長度:128
, 192
, 256
,長度越長安全性越高,性能越差。安全
分組加密
AES 在對明文進行加密時並非把整個明文一下所有加密成一整段密文,而是把明文拆分紅一個個獨立的明文塊,每一個明文塊長度爲 128 bit
。這些明文塊通過 AES 加密器處理後生成一個個獨立的密文塊,將全部密文塊拼接在一塊兒即是最終的 AES 加密結果。性能
填充算法
若是明文總長度不是 128 bit
的整數倍,如上圖中明文塊 N 的大小小於 128 bit
,則須要對最後長度不足的明文塊進行填充。AES 在不一樣的語言實現中有不一樣的填充算法,幾種常見的算法包括:加密
-
PKCS5Padding:默認填充算法,若是明文塊少於 16 個字節(128 bit),在明文塊末尾補足相應數量的字節,且每一個字節的值等於缺乏的字節數。如:明文
{1,2,3,4,5,6,7,8,9,0}
只佔用了 10 個字節,缺乏 6 個字節,則經此算法填充後變爲{1,2,3,4,5,6,7,8,9,0,6,6,6,6,6,6}
,填充內容所有爲缺乏的字節數量。.net -
ISO10126Padding:若是明文塊少於 16 個字節(128 bit),在明文塊末尾補足相應數量的字節,最後一個字節的值等於缺乏的字節數,其它字節的值使用隨機數填充。如:明文
{1,2,3,4,5,6,7,8,9,0}
,經此算法填充後可能變爲{1,2,3,4,5,6,7,8,9,0,r,9,$,v,u,6}
3d -
NoPadding:不作任何填充,可是要求明文必須是 16 個字節(128 bit)的整數倍code
注意:AES 加解密使用的填充算法必須保持一致。blog
工做模式
- ECB:電碼本模式,Electronic Codebook Book,默認
- CBC:密碼分組連接模式,Cipher Block Chaining
- CTR:計算器模式,Counter
- CFB:密碼反饋模式,Cipher FeedBack
- OFB:輸出反饋模式,Output FeedBack
注意:AES 加解密使用的工做模式也必須保持一致。ip