pycrypto 已被废弃
也是最重要的一点:pycrypto 项目已经不再维护,最后一个稳定版本发布于 2025 年,这通常意味着它可能存在未被发现的安全漏洞,并且不兼容较新版本的 Python 和操作系统。

强烈建议您使用它的替代品 pycryptodome。pycryptodome 是 pycrypto 的一个分支,它旨在成为 pycrypto 的一个直接、安全的替代品,拥有几乎完全相同的 API,并且积极维护。
除非您有特殊原因(例如维护一个非常古老的项目),否则请优先选择 pycryptodome。
推荐安装 pycryptodome (首选)
pycryptodome 是 pycrypto 的直接替代品,安装和使用都非常简单。
安装
使用 pip 进行安装,打开您的终端或命令提示符,然后运行以下命令:

# 在 Linux 或 macOS 上 pip install pycryptodome # 在 Windows 上 pip install pycryptodome
注意:
- 如果您使用的是 Python 3,并且系统中有多个 Python 版本,建议使用
pip3来确保安装到正确的 Python 环境中:pip3 install pycryptodome
- 如果您遇到权限问题,可以尝试在命令前加上
sudo(macOS/Linux) 或以管理员身份运行终端 (Windows)。
验证安装
安装完成后,您可以在 Python 代码中导入它来验证是否成功。
from Crypto.Cipher import AES
from Crypto import Random
# 创建一个随机的密钥和初始化向量 (IV)
key = Random.get_random_bytes(16) # AES-128
iv = Random.get_random_bytes(16)
# 创建一个 AES 加密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 要加密的数据
data = b"这是一段需要加密的秘密信息。"
# 加密数据
ct_bytes = cipher.encrypt(data)
print("加密成功!")
print(f"密钥: {key}")
print(f"密文: {ct_bytes}")
如果这段代码可以正常运行而没有报错,说明 pycryptodome 已经成功安装。
与 pycrypto 的代码兼容性
pycryptodome 的设计目标是与 pycrypto 100% 兼容,这意味着,如果您原来使用 pycrypto 的代码,几乎不需要任何修改就可以直接使用 pycryptodome。

唯一的区别在于导入方式。pycryptodome 将所有功能都放在顶级包中,以避免与标准库或其他库发生命名冲突。
| 功能 | pycrypto 导入方式 |
pycryptodome 导入方式 |
|---|---|---|
| AES 加密 | from Crypto.Cipher import AES |
from Crypto.Cipher import AES (相同) |
| Hash (SHA256) | from Crypto.Hash import SHA256 |
from Crypto.Hash import SHA256 (相同) |
| 随机数生成 | from Crypto import Random |
from Crypto import Random (相同) |
| RSA 密钥 | from Crypto.PublicKey import RSA |
from Crypto.PublicKey import RSA (相同) |
大部分情况下,导入语句是相同的。 如果您的代码报错,请检查是否是 pycrypto 特有的、已被 pycryptodome 移除或更改的用法,这种情况非常罕见。
安装 pycrypto (不推荐)
如果您确实因为某些特殊原因需要安装 pycrypto,请继续阅读,这通常会遇到更多问题,尤其是在 Windows 和较新版本的 Python 上。
安装方法
pycrypto 没有官方的预编译包(wheel),pip 会尝试从源代码编译安装,这需要您系统上安装了 C 编译器。
方法 A:使用 pip (可能失败)
最简单的方法是直接使用 pip,但如果您的系统缺少编译环境,它会失败。
pip install pycrypto
如果失败,通常的错误信息会提示缺少 gcc 或 msvc。
方法 B:使用预编译的 .whl 文件 (推荐)
为了避免编译问题,最好的方法是手动下载一个与您的 Python 版本和操作系统匹配的预编译包(wheel 文件,.whl)。
-
访问 PyPI 页面: 访问
pycrypto的 PyPI 页面:https://pypi.org/project/pycrypto/ -
找到合适的
.whl文件: 滚动到页面下方 "Files" 部分,您会看到很多.whl文件。- 文件名格式通常是
pycrypto-{version}-{python_tag}-{platform_tag}.whl。 python_tag:cp36,cp37,cp38,cp39,cp310,cp311,这必须与您的 Python 版本匹配,您可以在终端运行python --version查看。platform_tag:win_amd64:用于 64 位 Windows。manylinux1_x86_64:用于大多数 64 位 Linux 发行版。macosx_10_9_x86_64:用于 64 位 macOS。
- 文件名格式通常是
-
下载并安装:
-
下载正确的
.whl文件。 -
打开终端,使用
pip和文件的完整路径进行安装,如果文件下载到了Downloads文件夹:# 在 Linux/macOS 上 pip install /path/to/your/downloads/pycrypto-2.6.1-cp38-cp38-manylinux1_x86_64.whl # 在 Windows 上 (路径可能需要用引号括起来) pip install "C:\Users\YourUser\Downloads\pycrypto-2.6.1-cp38-cp38-win_amd64.whl"
-
常见问题及解决方案
-
错误:
Microsoft Visual C++ 14.0 is required(Windows) 这意味着您缺少 C++ 编译器,您需要安装 "Microsoft C++ Build Tools"。- 解决方案:访问 Visual Studio 下载页面,下载并安装 "Build Tools for Visual Studio",在安装程序中,确保勾选 "C++ build tools"。
-
错误:
error: Microsoft Visual C++ 9.0 is required (Unable to find vcvars.bat)(Windows)pycrypto的旧版本需要 Visual Studio 2008 (VC9) 的编译器,这在现代系统上很难找到。- 解决方案:尝试找到更新的
pycrypto版本的.whl文件,或者更推荐地,直接换用pycryptodome。
- 解决方案:尝试找到更新的
-
错误:
fatal error: openssl/evp.h: No such file or directory(Linux/macOS) 这意味着您缺少 OpenSSL 开发库。- 解决方案:
- 在 Debian/Ubuntu 上:
sudo apt-get update && sudo apt-get install build-essential libssl-dev - 在 Fedora/CentOS/RHEL 上:
sudo dnf groupinstall "Development Tools" && sudo dnf install openssl-devel - 在 macOS 上 (使用 Homebrew):
brew install openssl
- 在 Debian/Ubuntu 上:
- 解决方案:
| 特性 | pycryptodome (推荐) |
pycrypto (不推荐) |
|---|---|---|
| 状态 | 积极维护 | 已废弃 |
| 安全性 | 相对安全,漏洞会被修复 | 可能有未修复的安全漏洞 |
| 安装 | pip install pycryptodome,通常一次成功 |
可能需要编译器或手动下载 .whl 文件,过程复杂 |
| 兼容性 | API 与 pycrypto 几乎完全相同 |
- |
| 社区支持 | 活跃 | 无 |
最终建议:
请直接使用 pycryptodome,它能为您节省大量时间和精力,并且能确保您的项目使用的是更安全、更现代的加密库,只有当您维护一个无法修改依赖的旧项目时,才考虑去折腾 pycrypto。
