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.19.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e70f5c839c7798743a948efa2a65d1fe96bb397fe6d7f2bde93d869fe4f0ad69 |
|
MD5 | 62e2bc6cf8dee750d7778b8127533f73 |
|
BLAKE2b-256 | 3488dd3fcdc1cf3f71341264745c6ab90ebd9f3d8829511cf6c0ab960177801a |
Hashes for pycryptodome-3.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd4e95b0eb4b28251c825fe7aa941fe077f993e5ca9b855665935b86fbb1cc08 |
|
MD5 | 2475033392d2e40fc359b29407a6f92c |
|
BLAKE2b-256 | 94cb7e60730946756f9fef0e0a1d06c9687522293aee40bce2884bb6534bc0f6 |
Hashes for pycryptodome-3.19.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c22c80246c3c880c6950d2a8addf156cee74ec0dc5757d01e8e7067a3c7da015 |
|
MD5 | de8d49d37fec5e4bb6701047efe22323 |
|
BLAKE2b-256 | 4ec5a8db81dab2b5ae2e0e2cbfef4fe8a4c07a6b04ba510105c9f3b0720ddb3b |
Hashes for pycryptodome-3.19.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37e531bf896b70fe302f003d3be5a0a8697737a8d177967da7e23eff60d6483c |
|
MD5 | b40d656734e3c60f005754caf961520a |
|
BLAKE2b-256 | 055600a9147d1d439e1ff1c90e23917b1d82c6b4ee91c40ff5af7113cd312c78 |
Hashes for pycryptodome-3.19.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7efd46b0b4ac869046e814d83244aeab14ef787f4850644119b1c8b0ec2d637 |
|
MD5 | 80794da3a2bf513dfed7cf2d13fd8fbd |
|
BLAKE2b-256 | ac5a42ad5d4b9ea5059abc0e814b5586f03e113f6e41931915d0ab5bca375b04 |
Hashes for pycryptodome-3.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08b445799d571041765e7d5c9ca09c5d3866c2f22eeb0dd4394a4169285184f4 |
|
MD5 | 48d4dcff2c325a1f15425682a9f01f20 |
|
BLAKE2b-256 | 858d3fbf29bba9bb7278baec1aef28c2d103a5de306cd000ae64f2b34f3ad57f |
Hashes for pycryptodome-3.19.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 954d156cd50130afd53f8d77f830fe6d5801bd23e97a69d358fed068f433fbfe |
|
MD5 | 250e29007096544b5497ee701fe7767a |
|
BLAKE2b-256 | 3cea569cba9a1b3340bc6fc67069513b89b77e726f45c1c958009fe250b68c27 |
Hashes for pycryptodome-3.19.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c3df3613592ea6afaec900fd7189d23c8c28b75b550254f4bd33fe94acb84b9 |
|
MD5 | 4ad19060e688763f5a2ba23c01f8f8a8 |
|
BLAKE2b-256 | 42a14e45fc3e8271c29459be41a7f4a36c13437033fb438e6a4e8efa467326bb |
Hashes for pycryptodome-3.19.1-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81e9d23c0316fc1b45d984a44881b220062336bbdc340aa9218e8d0656587934 |
|
MD5 | 6ab82d1339d5a24ba9308da4086e84eb |
|
BLAKE2b-256 | 13750d63bf0daafd0580b17202d8a9dd57f28c8487f26146b3e2799b0c5a059c |
Hashes for pycryptodome-3.19.1-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed932eb6c2b1c4391e166e1a562c9d2f020bfff44a0e1b108f67af38b390ea89 |
|
MD5 | 8c48db8b36582c7557a009de4168b9b2 |
|
BLAKE2b-256 | 1de30c9679cd66cf5604b1f070bdf4525a0c01a15187be287d8348b2eafb718e |
Hashes for pycryptodome-3.19.1-cp35-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a470237ee71a1efd63f9becebc0ad84b88ec28e6784a2047684b693f458f41b7 |
|
MD5 | 4e7fe040382159157580b792cab726a5 |
|
BLAKE2b-256 | 7de0ded1968a5257ab34216a0f8db7433897a2337d59e6d03be113713b346ea2 |
Hashes for pycryptodome-3.19.1-cp35-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4805e053571140cb37cf153b5c72cd324bb1e3e837cbe590a19f69b6cf85fd03 |
|
MD5 | 6f08e1e769b69dcbfb629d8989321a8d |
|
BLAKE2b-256 | f623b064bd4cfbf2cc5f25afcde0e7c880df5b20798172793137ba4b62d82e72 |
Hashes for pycryptodome-3.19.1-cp35-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c9e222d0976f68d0cf6409cfea896676ddc1d98485d601e9508f90f60e2b0a2 |
|
MD5 | bc49fe18e7082e87bda306b83fb276af |
|
BLAKE2b-256 | afcded6e429fb0792ce368f66e83246264dd3a7a045b0b1e63043ed22a063ce5 |
Hashes for pycryptodome-3.19.1-cp35-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f34976c5c8eb79e14c7d970fb097482835be8d410a4220f86260695ede4c3e17 |
|
MD5 | d897ff07521eebd5214d991dbfe7ab0c |
|
BLAKE2b-256 | 4593f8450a92cc38541c3ba1f4cb4e267e15ae6d6678ca617476d52c3a3764d4 |
Hashes for pycryptodome-3.19.1-cp35-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0bfe61506795877ff974f994397f0c862d037f6f1c0bfc3572195fc00833b96 |
|
MD5 | 6174091b7a4b45c2e226e80a632554d7 |
|
BLAKE2b-256 | f4548ae0c43d1257b41bc9d3277c3f875174fd8ad86b9567f0b8609b99c938ee |
Hashes for pycryptodome-3.19.1-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27e1efcb68993b7ce5d1d047a46a601d41281bba9f1971e6be4aa27c69ab8065 |
|
MD5 | 3f4d226220ee6db55429154e5d578e79 |
|
BLAKE2b-256 | 34dd332c4c0055527d17dac317ed9f9c864fc047b627d82f4b9a56c110afc6fc |
Hashes for pycryptodome-3.19.1-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3e6f89480616781d2a7f981472d0cdb09b9da9e8196f43c1234eff45c915766 |
|
MD5 | 6c79082cb5249fdf8e571df87a9df4bc |
|
BLAKE2b-256 | 7c877181c42c8d5ba89822a4b824830506d0aeec02959bb893614767e3279846 |
Hashes for pycryptodome-3.19.1-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c6273ca5a03b672e504995529b8bae56da0ebb691d8ef141c4aa68f60765700 |
|
MD5 | bab2997581ec423950e479b0266b6670 |
|
BLAKE2b-256 | 249e320b885ea336c218ff54ec2b276cd70ba6904e4f5a14a771ed39a2c47d59 |
Hashes for pycryptodome-3.19.1-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11ddf6c9b52116b62223b6a9f4741bc4f62bb265392a4463282f7f34bb287180 |
|
MD5 | af26bf227921edcc44da7c5e5bae554a |
|
BLAKE2b-256 | 67e6238c53267fd8d223029c0a0d3730cb1b6594d60f62e40c4184703dc490b1 |
Hashes for pycryptodome-3.19.1-cp35-abi3-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67939a3adbe637281c611596e44500ff309d547e932c449337649921b17b6297 |
|
MD5 | bda6c2de8021e6b96dc7507ae890a1ea |
|
BLAKE2b-256 | a8ef4931bc30674f0de0ca0e827b58c8b0c17313a8eae2754976c610b866118b |
Hashes for pycryptodome-3.19.1-cp27-cp27mu-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cf5d3d6cf921fa81acd1f632f6cedcc03f5f68fc50c364cd39490ba01d17c49 |
|
MD5 | ea18d2c2ee8f23c4a42ee19a04c86cb7 |
|
BLAKE2b-256 | d86aab9dfc9b72eea0b62826bd242a9c5a63adab288254432bfed1d813300583 |
Hashes for pycryptodome-3.19.1-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd4e7e8bf0fc1ada854688b9b309ee607e2aa85a8b44180f91021a4dd330a928 |
|
MD5 | e5ab13127fed313b88d599de48234292 |
|
BLAKE2b-256 | b7ef1af3103884ae697b1831a7c481b5710d43fb60c6a819cdd39a299becb984 |
Hashes for pycryptodome-3.19.1-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8b80ff92049fd042177282917d994d344365ab7e8ec2bc03e853d93d2401786 |
|
MD5 | 5e5531313a506c2c8bdfb27908604823 |
|
BLAKE2b-256 | a6e1a3bbf6c348302ed8706d8f79a7a8a71473c47a1f54239fb0dd1643e541d5 |
Hashes for pycryptodome-3.19.1-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d0d2b97758ebf2f36c39060520447c26455acb3bcff309c28b1c816173a6ff5 |
|
MD5 | 52ec80789b69e877bf952917969a7807 |
|
BLAKE2b-256 | e92dc6f73dcddbddea169df9c4853c844518e3a087d8a0d4c91905f0683556c2 |
Hashes for pycryptodome-3.19.1-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c16426ef49d9cba018be2340ea986837e1dfa25c2ea181787971654dd49aadd |
|
MD5 | 2fa20e4ff3a8783046af8073c9675a9e |
|
BLAKE2b-256 | 53fe8eae4eddd7be4ca428f1c05c0b2db4b8a744f220f8faea7b57fab49c1f9c |
Hashes for pycryptodome-3.19.1-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a991f8ffe8dfe708f86690948ae46442eebdd0fff07dc1b605987939a34ec979 |
|
MD5 | 39fa9aab92391800b5fbf2f5a8adb2ee |
|
BLAKE2b-256 | ddd487dce873a8623cfda12c30e2e506835e1a232fc0382fee6ed0b7a91ac9af |
Hashes for pycryptodome-3.19.1-cp27-cp27m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e038ab77fec0956d7aa989a3c647652937fc142ef41c9382c2ebd13c127d5b4a |
|
MD5 | 9f89511b3410b8f37645adc6c8b99716 |
|
BLAKE2b-256 | 533a3c5f9ad45d224a26046033269278cfeb8e7a61d5a4a81299741deb57c55a |
Hashes for pycryptodome-3.19.1-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1bc0c49d986a1491d66d2a56570f12e960b12508b7e71f2423f532e28857f36 |
|
MD5 | 7bf58e1e57b0330361498f5feb529f5c |
|
BLAKE2b-256 | 1a68bd1a233de718bdbbb98cfe169ec3f4f9f56d73541cbfdeada41bc7e8621c |
Hashes for pycryptodome-3.19.1-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 420972f9c62978e852c74055d81c354079ce3c3a2213a92c9d7e37bbc63a26e2 |
|
MD5 | bef265b9f54727194b87f7ccf21dc63c |
|
BLAKE2b-256 | 16940e78beabbe7f7c438adda703664227c499c00482758d864cbfe436ce2871 |
Hashes for pycryptodome-3.19.1-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4464b0e8fd5508bff9baf18e6fd4c6548b1ac2ce9862d6965ff6a84ec9cb302a |
|
MD5 | b9920b50e882ff6352929bfd839493a4 |
|
BLAKE2b-256 | 15e5c893705c8162f2c4c58a4afb0bdaa63e9d6ade0a18f1dff7f49faae9065e |
Hashes for pycryptodome-3.19.1-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 694020d2ff985cd714381b9da949a21028c24b86f562526186f6af7c7547e986 |
|
MD5 | d33d605a5b84e9a4a7768f3699f3497f |
|
BLAKE2b-256 | d1b6ed75181b0b03d388c56572c58d7604be686f1f5af59472ae590769e8b2af |