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.16.0-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c82e3bc1e70dde153b0956bffe20a15715a1fe3e00bc23e88d6973eda4505944 |
|
MD5 | 0c76625208a1305125a82de2b69e507f |
|
BLAKE2b-256 | 485b71c37fcb8599f4b71ea673bfb708c9faf7305e88edb40fec28dbb3fe20bc |
Hashes for pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48d99869d58f3979d72f6fa0c50f48d16f14973bc4a3adb0ce3b8325fdd7e223 |
|
MD5 | d28bee0fe19f88c1233f224513b20c63 |
|
BLAKE2b-256 | 4d7355a84fedc758597da55d321b684520fa4f1816b71e7732b89a137a69863c |
Hashes for pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1daec4d31bb00918e4e178297ac6ca6f86ec4c851ba584770533ece554d29e2 |
|
MD5 | a946492ebfa38063968b8d01c51a3843 |
|
BLAKE2b-256 | 8de76467bcaabc18777b6e946f4cbab39988137fac965015ebb833428f5ec025 |
Hashes for pycryptodome-3.16.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95069fd9e2813668a2713a1efcc65cc26d2c7e741401ac46628f1ec957511f1b |
|
MD5 | 52ea2e634f4d73af244c9a8cae66fe9d |
|
BLAKE2b-256 | 10b1143a914e6466be669fc8c141d4ba5024e9b4d9f21d9e7da81c269230217a |
Hashes for pycryptodome-3.16.0-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63165fbdc247450017eb9ef04cfe15cb3a72ca48ffcc3a3b75b08c0340bf3647 |
|
MD5 | 89c0a565da8d82b4f7b31885fc552a54 |
|
BLAKE2b-256 | 3eae7de86f6b52d6870851a283f30985683b0424dd503dd327f1300bd9907ced |
Hashes for pycryptodome-3.16.0-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54d807314c66785c69cd25425933d4bd4c23547a593cdcf49d962fa3e0081336 |
|
MD5 | 3501dbe86a996f5c78482b42c2f4f9ab |
|
BLAKE2b-256 | 8212300c64d85d3f2c78d01e5eff22c2411d165ed3835017ccba9f220cb2e463 |
Hashes for pycryptodome-3.16.0-pp27-pypy_73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 265bfcbbf20d58e6871ce695a7a08aac9b41a0553060d9c05363abd6f3391bdd |
|
MD5 | 0522c9d5ff6376f82ee5f33c97b41820 |
|
BLAKE2b-256 | df1df8851160b1e3dfbbf7f9de30195cd9a93b7a4de2e0b9a39450a4ba49d8de |
Hashes for pycryptodome-3.16.0-cp35-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13b3e610a2f8938c61a90b20625069ab7a77ccea20d65a9a0f926cc0cc1314b1 |
|
MD5 | 715b100fff3049c780d58c27c88f25f4 |
|
BLAKE2b-256 | bcf7df2eca2ca9cd609bc3ac4c0d3ed68bb01b28c0c906831b0626575eaa68d4 |
Hashes for pycryptodome-3.16.0-cp35-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1047ac2b9847ae84ea454e6e20db7dcb755a81c1b1631a879213d2b0ad835ff2 |
|
MD5 | 9933ac2b5d1cb52d8869ae2e7bd9065d |
|
BLAKE2b-256 | a7f3492e3f27c89841ec4ba66001ded72f44cacea399ca2e0b9565ae0676f477 |
Hashes for pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6016269bb56caf0327f6d42e7bad1247e08b78407446dff562240c65f85d5a5e |
|
MD5 | 5f166489808f3c5c3240be926fb6990a |
|
BLAKE2b-256 | cc6e87f121ee4a0c3e4261c7ab06ddfc96ba4825d1fa777b6144cb38f644e2a1 |
Hashes for pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 856ebf822d08d754af62c22e2b93626509a72773214f92db1551e2b68d9e2a1b |
|
MD5 | ff2084defa9974dcf5cfd7d41f3224c0 |
|
BLAKE2b-256 | 32979ed3d306d1ebc73be7f948a25628803da1af651a31df391d6f61ecf600f8 |
Hashes for pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47c71a0347847b747ba1349767b16cde049bc36f21654eb09cc82306ef5fdcf8 |
|
MD5 | ef0d0bc92a1f1cf315d6fad2758a108e |
|
BLAKE2b-256 | 30d59de00491de712a31d8724d8f8c12bbcb60e26a8e810c2ff8ac306f04f6df |
Hashes for pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e750a21d8a265b1f9bfb1a28822995ea33511ba7db5e2b55f41fb30781d0d073 |
|
MD5 | 41c189d49ee1d816d726f3a6bbdc0f31 |
|
BLAKE2b-256 | 7971ced0ee573f4c0ff7832306fe79dea782f0dd058145ad1a5f443eefd2ccb3 |
Hashes for pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d67a2d2fe344953e4572a7d30668cceb516b04287b8638170d562065e53ee2e0 |
|
MD5 | c9fdd7e6b90e7c3902fbfda886740cd0 |
|
BLAKE2b-256 | 3e88aa01eff759e2e3c71900c06d40bde77a79974c2397744611b3a66d31c30d |
Hashes for pycryptodome-3.16.0-cp35-abi3-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69adf32522b75968e1cbf25b5d83e87c04cd9a55610ce1e4a19012e58e7e4023 |
|
MD5 | a9e094c4e9cff1f7a02bcfd7f49f960d |
|
BLAKE2b-256 | 839cc2446a368edaa1d2828a0b89247f850ed8fc44074b4958dd478c59d25217 |
Hashes for pycryptodome-3.16.0-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b12a88566a98617b1a34b4e5a805dff2da98d83fc74262aff3c3d724d0f525d6 |
|
MD5 | 4d51e7c2fcd2f94259a9240d108a16f1 |
|
BLAKE2b-256 | 3d33c305d6153c9598b65d33a98246ab774413de70245e4189d2889b7a0ae86d |
Hashes for pycryptodome-3.16.0-cp27-cp27mu-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bf2a270906a02b7b255e1a0d7b3aea4f06b3983c51ddec1673c380e0dff5b30 |
|
MD5 | 60d6c273b139b3a58fa19fe3f33b021f |
|
BLAKE2b-256 | 03cee7551f97fc007b191c2c882505510f3ab82365462d52430706946c018def |
Hashes for pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5df582f2112dd72331de7e567837e136a9629181a8ab69ef8949e4bc294a0b99 |
|
MD5 | 6294bc9509ceef8709f2d5c98ebae959 |
|
BLAKE2b-256 | 01af58c0afa501dafc4c4235fedc436e2b0a5d1b59f09e79e606a91743a83b14 |
Hashes for pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fc16c80a5da8231fd1f953a7b8dfeb415f68120248e8d68383c5c2c4b18708c |
|
MD5 | 52e62afae656d0cdaa373dcacf83780d |
|
BLAKE2b-256 | 9169118e6378e32c1af13322513d43ba844187082346dfaf8a7d971594af1177 |
Hashes for pycryptodome-3.16.0-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c69e19afc734b2a17b9d78b7bcb544aabd5a52ff628e14283b6e9404d27d0517 |
|
MD5 | 5878edf08b95599fc58c4d52b9905a5f |
|
BLAKE2b-256 | ccf16deb5bf61bbc2d1b08b822d7ab7bc129bf6f2d8ead7ad3c8817a5285dd0a |
Hashes for pycryptodome-3.16.0-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d950ed2a887905b3fa709b86be5a163e26e1b174703ed59d34eb6832f213222 |
|
MD5 | 9b83c2907c6d99a754d9366cc2545c97 |
|
BLAKE2b-256 | fd2b5dacc0caeeea7b1cad57f183cf992509745001de94b816ad4298beb76bb1 |
Hashes for pycryptodome-3.16.0-cp27-cp27m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58172080cbfaee724067a3c017add6a1a3cc167bbc8478dc5f2e5f45fa658763 |
|
MD5 | c0e96fab11e2a31da4eb7ebebff9ebb7 |
|
BLAKE2b-256 | fe5e552e2a0a2268d7dd457965a56c859ec111122de886018106f9bfd90d6a1c |
Hashes for pycryptodome-3.16.0-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0198fe96c22f7bc31e7a7c27a26b2cec5af3cf6075d577295f4850856c77af32 |
|
MD5 | afd9f1b705e2f6f45ff1a68dff213aa3 |
|
BLAKE2b-256 | c065eb53ebf5dc58a77b3c413508d3e385c189e1e2c3ea5fb7f58f404455630b |
Hashes for pycryptodome-3.16.0-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dab9359cc295160ba96738ba4912c675181c84bfdf413e5c0621cf00b7deeeaa |
|
MD5 | 59cef6876d6b0718c665bc4e4188a3bd |
|
BLAKE2b-256 | b96e99ff604582474b9396ab7be7ef2924dd875051f14211906007c841c2309e |
Hashes for pycryptodome-3.16.0-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e061311b02cefb17ea93d4a5eb1ad36dca4792037078b43e15a653a0a4478ead |
|
MD5 | 387d05f32f1e6832b8e212431325c914 |
|
BLAKE2b-256 | cb8d20404ba697a249b26b3c3405bdaf4e6c177c6882eeb501d0e1681f0a43b7 |