Python 3.6 使用 pyCryptodome 实现 AES 加密解密

云舒
云舒
发布时间:2026-10-10| 3人浏览过
原创

本文介绍如何在 Python 3.6 环境中使用 pyCryptodome 库实现 AES 加密与解密。文章详细说明了安装步骤,解决了 pycrypto 库停止维护及编译报错的问题,并提供了基于 ECB 模式的完整加解密代码示例,包括密钥填充、内容加密及解密验证过程。

环境准备与库安装

在 Python 3.6 环境下进行 AES 加密开发,推荐使用 pyCryptodome 第三方库。由于前代库 pyCyrpto 已停止维护,直接使用 pip install pycrypto 安装时,常因缺少微软 2014 工具环境而报错。因此,建议直接安装其后续分支 pyCryptodome。

安装命令如下:

pip install pycryptodome

此外,若需通过特定渠道获取,也可访问 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应版本的安装包,并通过 pip 命令进行安装。

AES 加密解密实现

以下代码展示了如何使用 pyCryptodome 库中的 AES 模块进行加密和解密操作。代码采用 ECB 模式,并处理了密钥和内容的长度填充问题。

#AES-demo
"""
  @author: sy
  @file: python_AES.py
  @time: 2017/12/12 09:10
  @desc: AES加密
"""
from Crypto.Cipher import AES
#秘钥,此处需要将字符串转为字节
key = b'abcdefgh'
#加密内容需要长达16位字符,所以进行空格拼接
def pad(text):
  while len(text) % 16 != 0:
    text += b' '
  return text
#加密秘钥需要长达16位字符,所以进行空格拼接
def pad_key(key):
  while len(key) % 16 != 0:
    key += b' '
  return key
#进行加密算法,模式ECB模式,把叠加完16位的秘钥传进来
aes = AES.new(pad_key(key), AES.MODE_ECB)
#加密内容,此处需要将字符串转为字节
text = b'woshijiamineirong'
#进行内容拼接16位字符后传入加密类中,结果为字节类型
encrypted_text = aes.encrypt(pad(text))
print(encrypted_text)

#此处是为了验证是否能将字节转为字符串后,进行解密成功
#实际上a 就是 encrypted_text ,也就是加密后的内容
a = b'\xb9K\xe8_.q\x1c!\x9f\xa2\xc8\x06\xf5\xc1\xd07'
#用aes对象进行解密,将字节类型转为str类型,错误编码忽略不计
de = str(aes.decrypt(a),encoding='utf-8',errors="ignore")
#获取str从0开始到文本内容的字符串长度。
print(de[:len(text)])

代码逻辑解析

在实现过程中,需要注意以下几个关键点:

  • 字节处理:AES 加密要求输入为字节类型。因此,字符串形式的密钥(如 b'abcdefgh')和内容(如 b'woshijiamineirong')需直接以字节形式传入。
  • 长度填充:AES 算法要求加密内容的长度必须是 16 的倍数。代码中通过 pad 函数在内容末尾补充空格,直至长度满足要求。同样,密钥长度也需通过 pad_key 函数填充至 16 位。
  • 加密结果:加密后的结果为字节形式(如 b'\xb9K\xe8_.q\x1c!\x9f\xa2\xc8\x06\xf5\xc1\xd07')。
  • 解密验证:解密时,使用相同的 AES 对象对加密后的字节进行解密。由于解密结果仍为字节类型,需将其转换为字符串。代码中使用 str() 函数并指定 encoding='utf-8' 和 errors="ignore" 来处理可能的编码问题,最后截取原始内容长度以验证解密正确性。

以上就是 Python 3.6 使用 pyCryptodome 实现 AES 加密解密的详细内容,更多关于 Python 数据加密与解密的技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。