python實現AES加密與解密

2022-10-03 12:30:15 字數 2494 閱讀 9281

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並分別傳給加密解密同時使用時,會...