Python 的AES加密與解密

2022-07-26 09:30:21 字數 3275 閱讀 6132

aes加密方式有五種:ecb, cbc, ctr, cfb, ofb

python 在windows下使用aes時要安裝的是pycryptodome 模組   pip install pycryptodome

python 在linux下使用aes時要安裝的是pycrypto模組   pip install pycrypto

cbc加密需要乙個十六位的key(金鑰)和乙個十六位iv(偏移量)

ecb加密不需要iv

aes cbc 加密的python實現

1

from crypto.cipher import

aes2

from binascii import

b2a_hex, a2b_hex34

5#如果text不足16位的倍數就用空格補足為16位

6def

add_to_16(text):

7if len(text.encode('

utf-8

')) % 16:

8 add = 16 - (len(text.encode('

utf-8

')) % 16)

9else

:10 add =0

11 text = text + ('

\0' *add)

12return text.encode('

utf-8')

131415#

加密函式

16def

encrypt(text):

17 key = '

9999999999999999

'.encode('

utf-8')

18 mode =aes.mode_cbc

19 iv = b'

qqqqqqqqqqqqqqqq

'20 text =add_to_16(text)

21 cryptos =aes.new(key, mode, iv)

22 cipher_text =cryptos.encrypt(text)23#

因為aes加密後的字串不一定是ascii字符集的,輸出儲存可能存在問題,所以這裡轉為16進製制字串

24return

b2a_hex(cipher_text)

252627#

解密後,去掉補足的空格用strip() 去掉

28def

decrypt(text):

29 key = '

9999999999999999

'.encode('

utf-8')

30 iv = b'

qqqqqqqqqqqqqqqq

'31 mode =aes.mode_cbc

32 cryptos =aes.new(key, mode, iv)

33 plain_text =cryptos.decrypt(a2b_hex(text))

34return bytes.decode(plain_text).rstrip('\0'

)353637

if__name__ == '

__main__':

38 e = encrypt("

hello world

") #

加密39 d = decrypt(e) #

解密40

print("

加密:"

, e)

41print("

解密:", d)

aes ecb加密的python實現

1

"""2

ecb沒有偏移量

3"""

4from crypto.cipher import

aes5

from binascii import

b2a_hex, a2b_hex67

8def

add_to_16(text):

9if len(text.encode('

utf-8

')) % 16:

10 add = 16 - (len(text.encode('

utf-8

')) % 16)

11else

:12 add =0

13 text = text + ('

\0' *add)

14return text.encode('

utf-8')

151617#

加密函式

18def

encrypt(text):

19 key = '

9999999999999999

'.encode('

utf-8')

20 mode =aes.mode_ecb

21 text =add_to_16(text)

22 cryptos =aes.new(key, mode)

2324 cipher_text =cryptos.encrypt(text)

25return

b2a_hex(cipher_text)

262728#

解密後,去掉補足的空格用strip() 去掉

29def

decrypt(text):

30 key = '

9999999999999999

'.encode('

utf-8')

31 mode =aes.mode_ecb

32 cryptor =aes.new(key, mode)

33 plain_text =cryptor.decrypt(a2b_hex(text))

34return bytes.decode(plain_text).rstrip('\0'

)353637

if__name__ == '

__main__':

38 e = encrypt("

hello world

") #

加密39 d = decrypt(e) #

解密40

print("

加密:"

, e)

41print("

解密:", d)

Python 的AES加密與解密

aes加密方式有五種 ecb,cbc,ctr,cfb,ofb python 在windows下使用aes時要安裝的是pycryptodome 模組pip install pycryptodome python 在linux下使用aes時要安裝的是pycrypto模組pip install pycry...

Python 的AES加密與解密

aes加密方式有五種 ecb,cbc,ctr,cfb,ofb python 在windows下使用aes時要安裝的是pycryptodome 模組 pip install pycryptodome python 在linux下使用aes時要安裝的是pycrypto模組 pip install pyc...

Python 的AES加密與解密

aes加密方式有五種 ecb,cbc,ctr,cfb,ofb 從安全性角度推薦cbc加密方法,本文介紹了cbc,ecb兩種加密方法的python實現。python 在 windows下使用aes時要安裝的是pycryptodome模組 pip install pycryptodomepython 在...