.. image:: https://github.com/Legrandin/pycryptodome/workflows/Integration%20test/badge.svg :target: https://github.com/Legrandin/pycryptodome/actions
.. image:: https://badge.fury.io/py/pycryptodome.svg :target: https://pypi.org/project/pycryptodome
.. image:: https://badge.fury.io/py/pycryptodomex.svg :target: https://pypi.org/project/pycryptodomex
PyCryptodome 是一个自包含的 Python 包,提供底层密码学原语。
它支持 Python 2.7、Python 3.7 及更高版本,以及 PyPy。
安装过程取决于你希望库所在的包。PyCryptodome 可以通过以下两种方式使用:
#. 几乎是旧版 PyCrypto 库的直接替代品。 你可以通过以下命令安装它::
pip install pycryptodome
在这种情况下,所有模块都安装在 Crypto 包下。
必须避免同时安装 PyCrypto 和 PyCryptodome,因为它们会相互干扰。
因此,只有当你确定整个应用都部署在 virtualenv 中时,才建议使用此选项。
#. 独立于旧版 PyCrypto 的库。 你可以通过以下命令安装它::
pip install pycryptodomex
在这种情况下,所有模块都安装在 Cryptodome 包下。
PyCrypto 和 PyCryptodome 可以共存。
为了在 Unix 中获得更快的公钥运算,你应该在系统中安装 GMP_。
PyCryptodome 是 PyCrypto 的一个分支。相对于 PyCrypto 的最后一个官方版本(2.6.1),它带来了以下增强功能:
认证加密模式(GCM、CCM、EAX、SIV、OCB、KW、KWP)
混合公钥加密(HPKE)
通过 AES-NI 在 Intel 平台上加速 AES
对 PyPy 的一流支持
椭圆曲线密码学(NIST P 曲线;Ed25519、Ed448、Curve25519、Curve448)
更好、更紧凑的 API(密码的 nonce 和 iv 属性、随机 nonce 和 IV 的自动生成、简化的 CTR 密码模式等)
SHA-3 哈希算法(FIPS 202)及派生函数(NIST SP-800 185):
KangarooTwelve、TurboSHAKE128 和 TurboSHAKE256 XOF
截断哈希算法 SHA-512/224 和 SHA-512/256(FIPS 180-4)
BLAKE2b 和 BLAKE2s 哈希算法
Salsa20 和 ChaCha20/XChaCha20 流密码
Poly1305 MAC
ChaCha20-Poly1305 和 XChaCha20-Poly1305 认证加密密码
scrypt、bcrypt、HKDF 和 NIST SP 800 108r1 计数器模式密钥派生函数
确定性(EC)DSA 和 EdDSA
受密码保护的 PKCS#8 密钥容器
Shamir 秘密共享方案
随机数直接来源于操作系统(而非用户空间的 CSPRNG)
简化的安装过程,包括对 Windows 更好的支持
更简洁的 RSA 和 DSA 密钥生成(主要基于 FIPS 186-4)
代码库的重大清理和简化
PyCryptodome 不是像 OpenSSL 那样的独立 C 库的包装器。算法尽可能多地用纯 Python 实现。只有对性能极其关键的部分(例如分组密码)才以 C 扩展的形式实现。
更多信息,请参见 主页_。
如有安全问题,请发送电子邮件至 [email protected]。
所有代码都可以从 GitHub_ 下载。
.. _主页: https://www.pycryptodome.org
.. _GMP: https://gmplib.org
.. _GitHub: https://github.com/Legrandin/pycryptodome