AES是對稱加密,同一個(gè)密鑰同時(shí)用來加密和解密.
AES加密數(shù)據(jù)塊分組長度必須為128比特设易,密鑰長度可以是128比特寸宵、192比特、256比特中的任意一個(gè)(如果數(shù)據(jù)塊及密鑰長度不足時(shí)狮鸭,會補(bǔ)齊).
#示例
from Crypto.Cipher import AES
from Crypto import Random
key = b'Sixteen byte key'
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
msg = iv + cipher.encrypt(b'Attack at dawn')
print iv
print msg
iv
用于加密或解密的初始化向量饰剥。
在“MODE_ECB”和“MODE_CTR”下此字段被忽略。
對于“MODE_OPENPGP”蒋歌,IV必須是block_size
字節(jié)長度加密
和block_size+ 2
字節(jié)的解密(加密的* IV是預(yù)先固定在密文上的)
并且是強(qiáng)制性的帅掘。
AES.MODE(用于加密或解密的鏈接模式)
ECB:是一種基礎(chǔ)的加密方式,密文被分割成分組長度相等的塊(不足補(bǔ)齊)堂油,然后單獨(dú)一個(gè)個(gè)加密锄开,一個(gè)個(gè)輸出組成密文。
-
CBC:是一種循環(huán)模式称诗,前一個(gè)分組的密文和當(dāng)前分組的明文異或操作后再加密萍悴,這樣做的目的是增強(qiáng)破解難度。
ECB和CBC的加密結(jié)果是不一樣的寓免,兩者的模式不同癣诱,而且CBC會在第一個(gè)密碼塊運(yùn)算時(shí)加入一個(gè)初始化向量(第三個(gè)參數(shù)iv)。
CFB/OFB實(shí)際上是一種反饋模式袜香,目的也是增強(qiáng)破解的難度撕予。CFB需要帶上
segment_size
參數(shù)PGP:
This mode should not be used.
CTR:帶上
counter
參數(shù)OPENPGP: 這種模式是CFB的一種變體,它只在PGP和OpenPGP應(yīng)用程序中使用蜈首。需要一個(gè)初始化向量(IV)实抡。
與CFB不同,IV不是傳輸?shù)浇邮諜C(jī)欢策。相反吆寨,加密的IV是一個(gè)隨機(jī)數(shù)據(jù)塊。它的兩個(gè)字節(jié)被復(fù)制踩寇,以作為鍵的正確性的校驗(yàn)和啄清。因此加密的IV比clean IV長2字節(jié)。