Cryptographic library for Python
Project description
PyCryptodome is a self-contained Python package of low-level cryptographic primitives.
It supports Python 2.7, Python 3.5 and newer, and PyPy.
You can install it with:
pip install pycryptodome
All modules are installed under the Crypto package.
Check the pycryptodomex project for the equivalent library that works under the Cryptodome package.
PyCryptodome is a fork of PyCrypto. It brings several enhancements with respect to the last official version of PyCrypto (2.6.1), for instance:
Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
Accelerated AES on Intel platforms via AES-NI
First class support for PyPy
Elliptic curves cryptography (NIST P-curves; Ed25519, Ed448)
Better and more compact API (nonce and iv attributes for ciphers, automatic generation of random nonces and IVs, simplified CTR cipher mode, and more)
SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
Salsa20 and ChaCha20 stream ciphers
scrypt and HKDF
Deterministic (EC)DSA and EdDSA
Password-protected PKCS#8 key containers
Shamir’s Secret Sharing scheme
Random numbers get sourced directly from the OS (and not from a CSPRNG in userspace)
Simplified install process, including better support for Windows
Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
Major clean ups and simplification of the code base
PyCryptodome is not a wrapper to a separate C library like OpenSSL. To the largest possible extent, algorithms are implemented in pure Python. Only the pieces that are extremely critical to performance (e.g. block ciphers) are implemented as C extensions.
For more information, see the homepage.
All the code can be downloaded from GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pycryptodome-3.18.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380 |
|
MD5 | a7cdc661efff149a04122830a3c4f31e |
|
BLAKE2b-256 | 0250e1cc5f1f0817af58d175cdad50f3ff7ae1490564803e6c625f4bd3c35e92 |
Hashes for pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2 |
|
MD5 | e89cd25b2f3953f60e1d9141f38177f6 |
|
BLAKE2b-256 | 201fb5f4685d9bfb83fe052ea7f79413827af0c8a7b4672074d08f9918dbe44c |
Hashes for pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec |
|
MD5 | 85e49e7742990ae260f7548db14774bd |
|
BLAKE2b-256 | 1ce12b88554ba22d89db6f9d62b5c1cb64098d9fdb6b1108c0fa1f3c8c9cd8af |
Hashes for pycryptodome-3.18.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb |
|
MD5 | 662df72ba839403f3f20feefa429e18f |
|
BLAKE2b-256 | ad0ad050702d7db88ede0ce4792310dd8562656b8a38881714eb859f1634327b |
Hashes for pycryptodome-3.18.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c |
|
MD5 | e660bc2f0fdb855f912d711e0e59faaa |
|
BLAKE2b-256 | 5aa805c3d516b489677d760c1855513bd87d85075c29382b58ccc8784a5c5724 |
Hashes for pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825 |
|
MD5 | cb5d83431ccdc9327c6735bccb8e4161 |
|
BLAKE2b-256 | 68324309e91f5381793e2cdc0dfadefb298c78d2f4d4469a12b956331dca0579 |
Hashes for pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403 |
|
MD5 | 1a3294dd219c5a325ce439cc2ad32633 |
|
BLAKE2b-256 | 7ace23ccf1f19bfaba114bfba068955ea78f7c511fb2fe5e4d89e920781bba7a |
Hashes for pycryptodome-3.18.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b |
|
MD5 | 6477fa24bc572c6bf6051851a156ec41 |
|
BLAKE2b-256 | 9ddd9927d01a8991c11d9a1cfecca3d293f9d6aa97cb51a472bc1b346819874a |
Hashes for pycryptodome-3.18.0-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08 |
|
MD5 | 3204cbc0967173b84702de5532ab07ca |
|
BLAKE2b-256 | acbb54da82da28a437f41df1d807dfa9492d2afb670191d078f7ac6781a6f56e |
Hashes for pycryptodome-3.18.0-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec |
|
MD5 | e87560ded44d5b3836a681b102194ccb |
|
BLAKE2b-256 | 96ad98adb578b2d6de8db25f83933f9002803896e0d9df6897bfdef7d9a4a9d3 |
Hashes for pycryptodome-3.18.0-cp35-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9 |
|
MD5 | 520e800d8c669512bc80aa06af6c3831 |
|
BLAKE2b-256 | 3fa172ad8fbeb2630e74fa89622ab24ec0ce46dc93dc172156f1a112eb76c014 |
Hashes for pycryptodome-3.18.0-cp35-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3 |
|
MD5 | cc0db4faec90b4aac2f6dfb4e3072728 |
|
BLAKE2b-256 | 0f267e4c213f49adc4b15d3518d6c6cc0e23f6234753303cdebbb8e22fb328fd |
Hashes for pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f |
|
MD5 | 490846d7c6836b13ff23651e1693a99b |
|
BLAKE2b-256 | 92d7df2bf45a1bcc7f2983a22c05f77ecd04bb8252a734219b0a6f089121dfa3 |
Hashes for pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e |
|
MD5 | dda4f3562b1b733d2177435b078c3ab0 |
|
BLAKE2b-256 | 38ee99d66c28b2baf40a68053191e4f99ffd62639000efe7cc799f75843164c4 |
Hashes for pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2 |
|
MD5 | 2ecefca7c7e1e8c24e5cd50bffb2ea6d |
|
BLAKE2b-256 | 892b4113d7124603ca258ba874633f1410760771c5313dfd73931fef4f272d63 |
Hashes for pycryptodome-3.18.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf |
|
MD5 | 8a392ab8bfd3f0eb1dade215d3276b90 |
|
BLAKE2b-256 | 408889623388754162ddb82c62814ccbfdbfcc8ed9bd6d5f7412d2479bdca3a7 |
Hashes for pycryptodome-3.18.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4 |
|
MD5 | 1faeb6f4ce3ba4b0bfb56b8317ebfa27 |
|
BLAKE2b-256 | 02934822844082b641e7d1983e4a7e8eb1fa4ed206d7af182404cd1cd7fb10d5 |
Hashes for pycryptodome-3.18.0-cp35-abi3-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6 |
|
MD5 | 5e76ce122d0e70e14723336db2799826 |
|
BLAKE2b-256 | 0d271fb1d3d7fe3e6af2586b7e4a4a24c687a1f5cacdd82e435fd62bd4fb6af0 |
Hashes for pycryptodome-3.18.0-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb |
|
MD5 | 22a111af2710f4e090a28b84b6a4f1ca |
|
BLAKE2b-256 | 2cbbbfbb160bc50455767178192eed66dc595912ba24c09551fe908c5269019d |
Hashes for pycryptodome-3.18.0-cp35-abi3-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1 |
|
MD5 | bf26cca176f1a38f655f04b511e5ba39 |
|
BLAKE2b-256 | eaa879c30c277edae8450c28a18b33f0499414f023b1f45b75c6ea5f738f0955 |
Hashes for pycryptodome-3.18.0-cp27-cp27mu-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14 |
|
MD5 | fde7d74e8057672a37932ddd06bed07b |
|
BLAKE2b-256 | 3bcb4090eca51c31a1c7f6733d8d9a6ab96bc3e4559db6b57ec38372f554a037 |
Hashes for pycryptodome-3.18.0-cp27-cp27mu-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e |
|
MD5 | 92ce307a2ba13dfde4e921dbf6bcdb5e |
|
BLAKE2b-256 | f59e357a906a04c3c5d93f9f123de67a230681897cff3b3d87e4f8a337b412e2 |
Hashes for pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918 |
|
MD5 | 5f01946abbc68e0449785c9fa1ab4390 |
|
BLAKE2b-256 | 74acf8cfa882380540f563df0d994c25c22d9296bcc9e56d2faab0f089448ec8 |
Hashes for pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944 |
|
MD5 | a794d38db803e54309df9eb87dbafae2 |
|
BLAKE2b-256 | cf93bda6a6f0c32747de9451f9e183ff4b9dde7d6ffa4e798fd45007e4827563 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4 |
|
MD5 | ecc89ad36f04defe6a655232269c10af |
|
BLAKE2b-256 | 14c26dead54adc193a5d30b6c54f6a048f56eb676bcbc8417f65156318d76d43 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf |
|
MD5 | 04f523e2cfb222edc999226fc5a349bf |
|
BLAKE2b-256 | 9cae52cec7eecd8933c73909551c4c67517ca6deae16048857213b2ec28c0792 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27 |
|
MD5 | 8a822dbf4347d102693bfda73c1a4eb9 |
|
BLAKE2b-256 | 8bed572063febe91fb25efb4bb7ff2cc8b94604be25ce2482f3805d79495e404 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2 |
|
MD5 | 95ebd5f18ee67b518f4992d575dd611e |
|
BLAKE2b-256 | e6147451d35d7bc8153e4505e683782b1d110190a51626aa944d46caf78d3ebc |
Hashes for pycryptodome-3.18.0-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148 |
|
MD5 | 57c8be70da0d1d4c230073e7ee868e4d |
|
BLAKE2b-256 | ce62eeb81dc5c95b79a92a95aaf7c0182a41d8d1d667f98a7dc35d6919f3ede5 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024 |
|
MD5 | 030cfd2c5ae6abc67a36403379481680 |
|
BLAKE2b-256 | fd3139f22e64766c312b1d5af90c6f1bd7baa52fbde34d4c1c34cfdaa4be9b05 |
Hashes for pycryptodome-3.18.0-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54 |
|
MD5 | 4ac6aa32ee67928d0cda5184e1fd7920 |
|
BLAKE2b-256 | a1eb030d2f273902f2b0c7d59bca28fe528dcc7213f2ddd5a65055a3f25101be |