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實現1from 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 在...