aes加密方式有五種:ecb, cbc, ctr, cfb, ofb
從安全性角度推薦cbc加密方法,本文介紹了cbc,ecb兩種加密方法的python實現
python 在 windows下使用aes時要安裝的是pycryptodome 模組 pip install pycryptodome
python 在 linux下使用aes時要安裝的是pycrypto模組 pip install pycrypto
cbc加密需要乙個十六位的key(金鑰)和乙個十六位iv(偏移量)
ecb加密不需要iv
from crypto.cipher import aes
from binascii import b2a_hex, a2b_hex
# 如果text不足16位的倍數就用空格補足為16位
def add_to_16(text):
if len(text.encode('utf-8')) % 16:
add = 16 - (len(text.encode('utf-8')) % 16)
else:
add = 0
text = text + ('\0' * add)
return text.encode('utf-8')
# 加密函式
def encrypt(text):
key = '9999999999999999'.encode('utf-8')
mode = aes.mode_cbc
iv = b'qqqqqqqqqqqqqqqq'
text = add_to_16(text)
cryptos = aes.new(key, mode, iv)
cipher_text = cryptos.encrypt(text)
# 因為aes加密後的字串不一定是ascii字符集的,輸出儲存可能存在問題,所以這裡轉為16進製制字串
return b2a_hex(cipher_text)
# 解密後,去掉補足的空格用strip() 去掉
def decrypt(text):
key = '9999999999999999'.encode('utf-8')
iv = b'qqqqqqqqqqqqqqqq'
mode = aes.mode_cbc
cryptos = aes.new(key, mode, iv)
plain_text = cryptos.decrypt(a2b_hex(text))
return bytes.decode(plain_text).rstrip('\0')
if __name__ == '__main__':
e = encrypt("hello world") # 加密
d = decrypt(e) # 解密
print("加密:", e)
print("解密:", d)
"""
ecb沒有偏移量
"""from crypto.cipher import aes
from binascii import b2a_hex, a2b_hex
def add_to_16(text):
if len(text.encode('utf-8')) % 16:
add = 16 - (len(text.encode('utf-8')) % 16)
else:
add = 0
text = text + ('\0' * add)
return text.encode('utf-8')
# 加密函式
def encrypt(text):
key = '9999999999999999'.encode('utf-8')
mode = aes.mode_ecb
text = add_to_16(text)
cryptos = aes.new(key, mode)
cipher_text = cryptos.encrypt(text)
return b2a_hex(cipher_text)
# 解密後,去掉補足的空格用strip() 去掉
def decrypt(text):
key = '9999999999999999'.encode('utf-8')
mode = aes.mode_ecb
cryptor = aes.new(key, mode)
plain_text = cryptor.decrypt(a2b_hex(text))
return bytes.decode(plain_text).rstrip('\0')
if __name__ == '__main__':
e = encrypt("hello world") # 加密
d = decrypt(e) # 解密
print("加密:", e)
print("解密:", 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 在...