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實現
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.encod程式設計客棧e('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.enc
# 因為aes加密後的字串不一定是ascii字符集的,輸出儲存可能存在問題,所以這裡轉為16進製制字串
return b2a_hex(cipher_text)
# 解密後,去掉補足的空格用strip() 去掉
def decrypt(text):
key = '9999999999999999'.enc'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)
aes ecb加密的python實現
"""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(te
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(a2bhxtrvtwhnu_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加密與解密
本文位址:
Python實現AES加密與解密
原文 aes加密方式有五種 ecb,cbc,ctr,cfb,ofb python 在windows下使用aes時要安裝的是pycryptodome 模組 pip install pycryptodome python 在linux下使用aes時要安裝的是pycrypto模組 pip install ...
Python 實現 AES 加密 解密
一 前言 金鑰 k 用來加密明文的密碼,在對稱加密演算法中,加密與解密的金鑰是相同的。金鑰為接收方與傳送方協商產生,但不可以直接在網路上傳輸,否則會導致金鑰洩漏,通常是通過非對稱加密演算法加密金鑰,然後再通過網路傳輸給對方,或者直接面對面商量金鑰。金鑰是絕對不可以洩漏的,否則會被攻擊者還原密文,竊取...
Python實現AES加密解密
報錯 typeerror decrypt cannot be called after encrypt 原因 cryptor不能寫在主函式中同時給加密函式與解密函式使用,儘管加密解密都是用 cryptor aes.new key,mode,iv 但若將其定義在main並分別傳給加密解密同時使用時,會...