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.6 and newer, and PyPy.
You can install it with:
pip install pycryptodomex
All modules are installed under the Cryptodome package.
Check the pycryptodome project for the equivalent library that works under the Crypto 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, Curve25519)
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 pycryptodomex-3.21.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27e84eeff24250ffec32722334749ac2a57a5fd60332cd6a0680090e7c42877e |
|
MD5 | 1eeb49d8de3b3741d051c76e626e3393 |
|
BLAKE2b-256 | 2dc7a0d3356f3074ac548afefa515ff46f3bea011deca607faf1c09b26dd5330 |
Hashes for pycryptodomex-3.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0df2608682db8279a9ebbaf05a72f62a321433522ed0e499bc486a6889b96bf3 |
|
MD5 | 78b1f2a65009970ab28b6b5c4e13a115 |
|
BLAKE2b-256 | f87060bb08e9e9841b18d4669fb69d84b64ce900aacd7eb0ebebd4c7b9bdecd3 |
Hashes for pycryptodomex-3.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5823d03e904ea3e53aebd6799d6b8ec63b7675b5d2f4a4bd5e3adcb512d03b37 |
|
MD5 | 900a7b829550bbeceb4cb2a32bb3febe |
|
BLAKE2b-256 | c96f191b73509291c5ff0dddec9cc54797b1d73303c12b2e4017b24678e57099 |
Hashes for pycryptodomex-3.21.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3efddfc50ac0ca143364042324046800c126a1d63816d532f2e19e6f2d8c0c31 |
|
MD5 | 4d5a3c5b4aca651f2ca07b890759b61b |
|
BLAKE2b-256 | e59f39a6187f3986841fa6a9f35c6fdca5030ef73ff708b45a993813a51d7d10 |
Hashes for pycryptodomex-3.21.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a9d8342cf22b74a746e3c6c9453cb0cfbb55943410e3a2619bd9164b48dc9d9 |
|
MD5 | 323844556648afe48c293345683e95ee |
|
BLAKE2b-256 | 211cf8860c558b44776573acd719c1e86fec14d42f29cf248eaba9c770151d14 |
Hashes for pycryptodomex-3.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a1058e6dfe827f4209c5cae466e67610bcd0d66f2f037465daa2a29d92d952b |
|
MD5 | 44a988f81cdbb111208afc0591706c11 |
|
BLAKE2b-256 | 0793e68fac121fcf761fd7a85a27f024c9238217e4d943c861a856ca354f412e |
Hashes for pycryptodomex-3.21.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ba09a5b407cbb3bcb325221e346a140605714b5e880741dc9a1e9ecf1688d42 |
|
MD5 | 07cb5a933a664cdd13ac70a96b79ce78 |
|
BLAKE2b-256 | b8478a39243d09fd294c339c59834ba3c92715584f3ed0d92b6bacb26f803ce0 |
Hashes for pycryptodomex-3.21.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ef436cdeea794015263853311f84c1ff0341b98fc7908e8a70595a68cefd971 |
|
MD5 | 7512488cb967c7bc4eb98b1458af7b70 |
|
BLAKE2b-256 | 55ee9349856ee02826899fdc489016756865158217909a82dcc74cc4d55d33af |
Hashes for pycryptodomex-3.21.0-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 365aa5a66d52fd1f9e0530ea97f392c48c409c2f01ff8b9a39c73ed6f527d36c |
|
MD5 | 363d330840710ed91e14e43a37d141c2 |
|
BLAKE2b-256 | 9373be7a54a5903508070e5508925ba94493a1f326cfeecfff750e3eb250ea28 |
Hashes for pycryptodomex-3.21.0-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | feaecdce4e5c0045e7a287de0c4351284391fe170729aa9182f6bd967631b3a8 |
|
MD5 | f423c8b327f17a6bfa87ee03d2a95242 |
|
BLAKE2b-256 | afac24125ad36778914a36f08d61ba5338cb9159382c638d9761ee19c8de822c |
Hashes for pycryptodomex-3.21.0-cp36-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0e9765f93fe4890f39875e6c90c96cb341767833cfa767f41b490b506fa9ec0 |
|
MD5 | 92f04f42829ac2443809dc8336c3726d |
|
BLAKE2b-256 | 5bbe7c991840af1184009fc86267160948350d1bf875f153c97bb471ad944e40 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3d77919e6ff56d89aada1bd009b727b874d464cb0e2e3f00a49f7d2e709d76e |
|
MD5 | e2108d519e9f11b1649e541f041b344b |
|
BLAKE2b-256 | 924bd33ef74e2cc0025a259936661bb53432c5bbbadc561c5f2e023bcd73ce4c |
Hashes for pycryptodomex-3.21.0-cp36-abi3-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52e23a0a6e61691134aa8c8beba89de420602541afaae70f66e16060fdcd677e |
|
MD5 | f99d34c150ffe8f2bc41d3a268600509 |
|
BLAKE2b-256 | 617449f5d20c514ccc631b940cc9dfec45dcce418dc84a98463a2e2ebec33904 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 770d630a5c46605ec83393feaa73a9635a60e55b112e1fb0c3cea84c2897aa0a |
|
MD5 | 6b13a838092f74c887923d79b6ad5be3 |
|
BLAKE2b-256 | 3d0090a15f16c234815b660303c2d7266b41b401ea2605f3a90373e9d425e39f |
Hashes for pycryptodomex-3.21.0-cp36-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc7e111e66c274b0df5f4efa679eb31e23c7545d702333dfd2df10ab02c2a2ce |
|
MD5 | a3a52b0195ced005d119add0cc92f796 |
|
BLAKE2b-256 | 1c6a2a1a101b0345ee70376ba93df8de6c8c01aac8341fda02970800873456a7 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9aa0cf13a1a1128b3e964dc667e5fe5c6235f7d7cfb0277213f0e2a783837cc2 |
|
MD5 | 89ce1f1f03a87aa918c0dd9054fc8f9f |
|
BLAKE2b-256 | 463ff5bef92b11750af9e3516d4e69736eeeff20a2818d34611508bef5a7b381 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77ac2ea80bcb4b4e1c6a596734c775a1615d23e31794967416afc14852a639d3 |
|
MD5 | bb5c34fc90b48f4d8d5cbc985c5ffc59 |
|
BLAKE2b-256 | 0c9e6e748c1fa814c956d356f93cf7192b19487ca56fc9e2a0bcde2bbc057601 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46eb1f0c8d309da63a2064c28de54e5e614ad17b7e2f88df0faef58ce192fc7b |
|
MD5 | a0ceea4556bf949bb7d4c2ab21e35773 |
|
BLAKE2b-256 | de4df0c65afd64ce435fd0547187ce6f99dfb37cdde16b05b57bca9f5c06966e |
Hashes for pycryptodomex-3.21.0-cp36-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 103c133d6cd832ae7266feb0a65b69e3a5e4dbbd6f3a3ae3211a557fd653f516 |
|
MD5 | e84d295455789033b983792362539fbb |
|
BLAKE2b-256 | ce8f4d0e2a859a6470289d64e39b419f01d2494dfa2e4995342d50f6c2834237 |
Hashes for pycryptodomex-3.21.0-cp36-abi3-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34325b84c8b380675fd2320d0649cdcbc9cf1e0d1526edbe8fce43ed858cdc7e |
|
MD5 | 2d1b93204912d0dbc7e2cdc2126aa11f |
|
BLAKE2b-256 | 225e99f217d9881eead69607a2248dd7bbdf610837d7f5ad53f45a6cb71bbbfb |
Hashes for pycryptodomex-3.21.0-cp27-cp27mu-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5241bdb53bcf32a9568770a6584774b1b8109342bd033398e4ff2da052123832 |
|
MD5 | 20a1c5ca13e4f7228eab6d7ff954810d |
|
BLAKE2b-256 | a0d3db02438871045935f03dbc580bfea338bd368ddc8aedef5fb8788197bcff |
Hashes for pycryptodomex-3.21.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65d275e3f866cf6fe891411be9c1454fb58809ccc5de6d3770654c47197acd65 |
|
MD5 | 045d4d0d96314e79bf2aca28c4352c84 |
|
BLAKE2b-256 | a451a57a014cc4ccb8f7341840dc66f382387135d9d450adabef5e937bc33fce |
Hashes for pycryptodomex-3.21.0-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56435c7124dd0ce0c8bdd99c52e5d183a0ca7fdcd06c5d5509423843f487dd0b |
|
MD5 | 193bac0ea8a4ff28a919c8522b6d60db |
|
BLAKE2b-256 | 95b3544e49991031b8c996889f409b336af44b7195495c54fd97a4ae4584b3f3 |
Hashes for pycryptodomex-3.21.0-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c07e64867a54f7e93186a55bec08a18b7302e7bee1b02fd84c6089ec215e723a |
|
MD5 | f7adc86300e3586c21eb16c6f8384f63 |
|
BLAKE2b-256 | 04bd8a11a7a860700fb82114f15b6d8a525431614b9ada82c36749f08112f549 |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da76ebf6650323eae7236b54b1b1f0e57c16483be6e3c1ebf901d4ada47563b6 |
|
MD5 | 33ad5fbd4e74e2de5026742ce1a2e4e5 |
|
BLAKE2b-256 | 50f64bdb89e5a008f01682124224a9c18e8eaa89c532384d63ce31d39f745f5a |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef046b2e6c425647971b51424f0f88d8a2e0a2a63d3531817968c42078895c00 |
|
MD5 | 88e240aba28c3a5d5b7280cafa0b5f75 |
|
BLAKE2b-256 | 1fc561e2167cd241a184f8acd467f6da6aff9de0742c3972c5bd552fe6476707 |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e859e53d983b7fe18cb8f1b0e29d991a5c93be2c8dd25db7db1fe3bd3617f6f9 |
|
MD5 | 5761a297ed4b57724ae4454f7a769e69 |
|
BLAKE2b-256 | f47725043ddeca3f2281a3345fa19e11f461c92a73583580886c614601a40e71 |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbb07f88e277162b8bfca7134b34f18b400d84eac7375ce73117f865e3c80d4c |
|
MD5 | 5988d7ea777b30c4deed4dffb8e9c2d5 |
|
BLAKE2b-256 | 15fbfe01e6f36d769e09a1272e57fd6f1e59c09a83b45ec4ac30b55d6ca1b5c9 |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1233443f19d278c72c4daae749872a4af3787a813e05c3561c73ab0c153c7b0f |
|
MD5 | 0602837d63cb03b9d980ba4f3d906dc5 |
|
BLAKE2b-256 | 1ad64cb2a4fe9fa0604fe273b51805bb9c4e3c5862993791cbae412bd387020e |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a192fb46c95489beba9c3f002ed7d93979423d1b2a53eab8771dbb1339eb3ddd |
|
MD5 | 2d2cbdd96feee1544e830490b6e4f9e0 |
|
BLAKE2b-256 | 1847ea5564166fcbbda0f8b7996a109593af1292052bd796f7dc4a70dcf247f0 |
Hashes for pycryptodomex-3.21.0-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbeb84a399373df84a69e0919c1d733b89e049752426041deeb30d68e9867822 |
|
MD5 | 12ecb5d8c488794e92b79ecf1c2ecd21 |
|
BLAKE2b-256 | 9723450ac6bd0072f0e6268452af78d5ded6df4c85c14b03bb345cbd0167cb1e |