Python实现AES加密、解密的两种方法
简介
AES是对称加密算法中的一种,使用广泛,特别是在对数据进行加密和解密时。Python语言天然地支持AES算法,并且提供了简单易懂的API接口。
在此文档中,我们将详细讲解Python实现AES加密、解密的两种方法。
方法一:使用Python标准库的Crypto.Cipher模块
此方法不需要额外安装任何库,直接使用Python标准库的Crypto.Cipher模块即可实现AES加密、解密。
- 安装Crypto库
如果在使用Python的过程中没有安装Crypto库,则需要使用以下命令安装:
pip install pycrypto
- 使用Crypto.Cipher模块进行AES加密、解密
以下代码演示了使用Crypto.Cipher模块进行AES加密、解密:
from Crypto.Cipher import AES
import base64
def aes_encrypt(key, text):
cipher = AES.new(key, AES.MODE_ECB)
pad = lambda s: s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)
text = pad(text)
ciphertext = cipher.encrypt(text)
return base64.b64encode(ciphertext)
def aes_decrypt(key, text):
cipher = AES.new(key, AES.MODE_ECB)
text = base64.b64decode(text)
plaintext = cipher.decrypt(text)
unpad = lambda s: s[0:-ord(s[-1])]
return unpad(plaintext.decode('utf-8'))
key = 'this is a key123'
text = 'hello world'
encrypted_text = aes_encrypt(key, text)
decrypted_text = aes_decrypt(key, encrypted_text)
print('encrypted_text:', encrypted_text)
print('decrypted_text:', decrypted_text)
结果输出:
encrypted_text: b'dwqrqidt9/s/Sw3L8q0QXg=='
decrypted_text: hello world
方法二:使用pycryptodome库
pycryptodome是一个Python安装库,提供了加密和解密的功能,支持AES、DES、RSA等算法。
- 安装pycryptodome库
如果在使用Python的过程中没有安装pycryptodome库,则需要使用以下命令安装:
pip install pycryptodomex
- 使用pycryptodome库进行AES加密、解密
以下代码演示了使用pycryptodome库进行AES加密、解密:
from Crypto.Cipher import AES
import base64
def aes_encrypt(key, text):
cipher = AES.new(key.encode('utf8'), AES.MODE_ECB)
pad = lambda s: s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)
text = pad(text)
ciphertext = cipher.encrypt(text.encode('utf8'))
return base64.b64encode(ciphertext)
def aes_decrypt(key, text):
cipher = AES.new(key.encode('utf8'), AES.MODE_ECB)
text = base64.b64decode(text)
plaintext = cipher.decrypt(text)
unpad = lambda s: s[0:-s[-1]]
return unpad(plaintext).decode('utf8')
key = 'this is a key123'
text = 'hello world'
encrypted_text = aes_encrypt(key, text).decode('utf8')
decrypted_text = aes_decrypt(key, encrypted_text)
print('encrypted_text:', encrypted_text)
print('decrypted_text:', decrypted_text)
结果输出:
encrypted_text: dwqrqidt9/s/Sw3L8q0QXg==
decrypted_text: hello world
结论
以上是Python实现AES加密、解密的两种方法。无论采用哪种方法,都需要注意使用合适的加密模式和填充方法,避免安全性问题。在使用过程中建议选择pycryptodome库,因为该库提供了更多的加密和解密功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现AES加密,解密的两种方法 - Python技术站