Python_pycrypto_实现AES加密与解密
安装
python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome
python 在 Linux下使用AES时要安装的是pycrypto模块 pip install pycrypto
使用
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB,具体使用哪种根据项目情况而定。
下面介绍加密方式采用 ECB加密,填充方式采用pkcs7 的加密与解密方法
import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad def aes_encrypt(secret_key, data): """加密数据 :param secret_key: 加密秘钥 :param data: 需要加密数据 """ data = bytes(data, encoding="utf-8") # 填充数据采用pkcs7 data = pad(data, block_size=16, style="pkcs7") # 创建加密器 cipher = AES.new(key=secret_key.encode("utf-8"), mode=AES.MODE_ECB) # 对数据进行加密 encrypted_data = cipher.encrypt(data) # 对数据进行base64编码 encrypted_data = base64.b64encode(encrypted_data) return encrypted_data.decode() def aes_decrypt(secret_key, data): """解密数据 """ data = base64.b64decode(data) cipher = AES.new(key=secret_key.encode("utf-8"), mode=AES.MODE_ECB) decrypt_data = cipher.decrypt(data) decrypt_data = unpad(decrypt_data, 16, style="pkcs7") return decrypt_data.decode("utf-8") if __name__ == '__main__': key = "22a1d4c4263e83d7f8c33a321eb19ae7" data = "asdASD73j8H9k6C1asvhBOK0PXOzJM7dsqXysssW" print("原始数据:%s" % data) r = aes_encrypt(key, data) print("加密数据:%s" % r) r = aes_decrypt("22a1d4c4263e83d7f8c33a321eb19ae7", r) print("解密数据:%s" % r)
执行情况如下