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.17-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74794a2e2896cd0cf56fdc9db61ef755fa812b4a4900fa46c49045663a92b8d0 |
|
MD5 | 0f327c6846b0c0a67656aa294cc29187 |
|
BLAKE2b-256 | 9d9893da5981fea934be5bd60d87e4bdee1e157b565b7b730e09766b478fd0ba |
Hashes for pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4992ec965606054e8326e83db1c8654f0549cdb26fce1898dc1a20bc7684ec1c |
|
MD5 | c7e6e062edba8c70a4e3cda78bd39004 |
|
BLAKE2b-256 | ecc122f08e3e29b9e63e366624129ad6b1cb0226a6bc1e136590dddefdec9986 |
Hashes for pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53068e33c74f3b93a8158dacaa5d0f82d254a81b1002e0cd342be89fcb3433eb |
|
MD5 | fa3ffca9660c4332fb53fb579dea2a1a |
|
BLAKE2b-256 | 3d7f0cc8b6f606f2b5e728e196ad1e5781f5cc7eb0739cd9b801dbb971540384 |
Hashes for pycryptodome-3.17-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a232474cd89d3f51e4295abe248a8b95d0332d153bf46444e415409070aae1e |
|
MD5 | 6f538b9ce856de04e563134214125efc |
|
BLAKE2b-256 | 0aac4e53706aa59841b0d0840862cb424a92057922638d58e5d03cc9fa56f2f0 |
Hashes for pycryptodome-3.17-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8198f2b04c39d817b206ebe0db25a6653bb5f463c2319d6f6d9a80d012ac1e37 |
|
MD5 | 8d314c335980f545df04f84adf464001 |
|
BLAKE2b-256 | 965ec3c0591f1ff28787f302dd6459e059d8d503393ca3a7b0f150c48adac050 |
Hashes for pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38bbd6717eac084408b4094174c0805bdbaba1f57fc250fd0309ae5ec9ed7e09 |
|
MD5 | f0ad9b162576c2425ccd3b31513be0d1 |
|
BLAKE2b-256 | 480d0ec990bc94eab7dec1aeea19ba171973e9b206f3ef845f7822cd5f684e95 |
Hashes for pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f68d6c8ea2974a571cacb7014dbaada21063a0375318d88ac1f9300bc81e93c3 |
|
MD5 | 6f2b9f41b2be80835d71b8618e9a8a57 |
|
BLAKE2b-256 | b1ded167099339f8bc971da9b7258680020729c10a84678f2fc9f160eaf31fa7 |
Hashes for pycryptodome-3.17-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a74f45aee8c5cc4d533e585e0e596e9f78521e1543a302870a27b0ae2106381e |
|
MD5 | 36917aaf5d18c22b62a4769ef0a72527 |
|
BLAKE2b-256 | b59c063b2a6c8eb5e9269b53e322e9cba56d299a6e67ba36ed8aa2af1be8b21b |
Hashes for pycryptodome-3.17-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afbcdb0eda20a0e1d44e3a1ad6d4ec3c959210f4b48cabc0e387a282f4c7deb8 |
|
MD5 | 985f2edec8934dcc0430cb6925784e26 |
|
BLAKE2b-256 | 833e7ace48c22cd605464c296c49bc40fdaef83626fcbf15097ff9414f873377 |
Hashes for pycryptodome-3.17-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8e550caf52472ae9126953415e4fc554ab53049a5691c45b8816895c632e4d7 |
|
MD5 | c7ac6dbf73dae57bec825f7102518f61 |
|
BLAKE2b-256 | 9658bf40ec413a6b88e378bfcf8e83a3c258c7b8cf0cb61e47100512c5ac56a7 |
Hashes for pycryptodome-3.17-pp27-pypy_73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1819b67bcf6ca48341e9b03c2e45b1c891fa8eb1a8458482d14c2805c9616f2 |
|
MD5 | d3e3988c0f4b48dc6df823cb60dcb1fd |
|
BLAKE2b-256 | 2b1ed928db092e1d445eb27b565c3a889922a33dd4bf8e5177b854024a88a7d9 |
Hashes for pycryptodome-3.17-cp35-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ec565e89a6b400eca814f28d78a9ef3f15aea1df74d95b28b7720739b28f37f |
|
MD5 | 8c1d24f012aac0e1bce7d01e8e4d6193 |
|
BLAKE2b-256 | 147af764564dceaf131e7a740c618d6bdfc30e2ca264e9de410ca757f6c4c3e3 |
Hashes for pycryptodome-3.17-cp35-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3228728a3808bc9f18c1797ec1179a0efb5068c817b2ffcf6bcd012494dffb2 |
|
MD5 | 21782c6b2f1b0735807a2879d1fb6114 |
|
BLAKE2b-256 | 7286d2e3f764fc0c646bbf6d6ca61ea51546c97cd98430a602501fa9ec0a40ca |
Hashes for pycryptodome-3.17-cp35-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 909e36a43fe4a8a3163e9c7fc103867825d14a2ecb852a63d3905250b308a4e5 |
|
MD5 | b6eb22686c22575840426845ad2cd4ef |
|
BLAKE2b-256 | bc14c37136acac4aa4fa3980bdbae5d167b36b039775eeeef6cd61529840f2bf |
Hashes for pycryptodome-3.17-cp35-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a30f51b990994491cec2d7d237924e5b6bd0d445da9337d77de384ad7f254f9 |
|
MD5 | 93f9092d89bd5dffd0355a6902f5aeff |
|
BLAKE2b-256 | 525470c63a8cf3280ad0ea317f4078333b02854170b78080e421c4b56294019e |
Hashes for pycryptodome-3.17-cp35-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 333306eaea01fde50a73c4619e25631e56c4c61bd0fb0a2346479e67e3d3a820 |
|
MD5 | 3a9b68c91b8f73e2e4f31bfa97ed4fc7 |
|
BLAKE2b-256 | ebe5cf0c2809e18619d593504fd17a8c2284a76a269f57499226d7aaca360cfb |
Hashes for pycryptodome-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80ea8333b6a5f2d9e856ff2293dba2e3e661197f90bf0f4d5a82a0a6bc83a626 |
|
MD5 | f10fd8efa569500e3a086af099211d04 |
|
BLAKE2b-256 | 145877278d7a078241b55b515f6073b90108125fb0d197b384a0f372c5f61c80 |
Hashes for pycryptodome-3.17-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c133f6721fba313722a018392a91e3c69d3706ae723484841752559e71d69dc6 |
|
MD5 | 032ff53939fb3ac48b76e8f56e284ecf |
|
BLAKE2b-256 | 57ed2cfec0ee52cb1089cc1a4d0fb79492b2c84460a3fd2b6beaab8e77754a51 |
Hashes for pycryptodome-3.17-cp35-abi3-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc22cc00f804485a3c2a7e2010d9f14a705555f67020eb083e833cabd5bd82e4 |
|
MD5 | 331ba6f6a6ccd11b62a5c4f71c844259 |
|
BLAKE2b-256 | d2f455bafc39cd2b268398eba63f8846e5649923590977f3826e625a663998fa |
Hashes for pycryptodome-3.17-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca1ceb6303be1282148f04ac21cebeebdb4152590842159877778f9cf1634f09 |
|
MD5 | 37f2738160df3cc5b62cb764bfdbb89a |
|
BLAKE2b-256 | ea7d690febdf9d8831f13531b452e38258925e369246cbefbb1c325b0210f053 |
Hashes for pycryptodome-3.17-cp35-abi3-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7debd9c439e7b84f53be3cf4ba8b75b3d0b6e6015212355d6daf44ac672e210 |
|
MD5 | 83a6b6318f3bef4768d159a4ad4cd639 |
|
BLAKE2b-256 | 056effedda1885ccb5ab52911cfd38ee834c5fa1df1f500f0da34f92b52f70e1 |
Hashes for pycryptodome-3.17-cp27-cp27mu-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5587803d5b66dfd99e7caa31ed91fba0fdee3661c5d93684028ad6653fce725f |
|
MD5 | 496460448eaa748f3e9506718d2fe898 |
|
BLAKE2b-256 | 514983d54682b9661f195fd9e78c83280451e1a73b396d988b359c1b8f6ae06a |
Hashes for pycryptodome-3.17-cp27-cp27mu-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d086d46774e27b280e4cece8ab3d87299cf0d39063f00f1e9290d096adc5662a |
|
MD5 | 410df0b98a1af7c9b401e2e1e9a1e87a |
|
BLAKE2b-256 | 8b2a0cfadd425e1fa848111d8faeb5b3e8e3aa1d76eaad94550302df5eab0ff6 |
Hashes for pycryptodome-3.17-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a790bc045003d89d42e3b9cb3cc938c8561a57a88aaa5691512e8540d1ae79c |
|
MD5 | a899201d9f8ab22090dd738bcfde4d93 |
|
BLAKE2b-256 | 89b337bc985bd473c25cd8fa1131a0da8401eac3753c1e035eecf8c9ae46638d |
Hashes for pycryptodome-3.17-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f44c0d28716d950135ff21505f2c764498eda9d8806b7c78764165848aa419bc |
|
MD5 | f5e77f1deb409a63f1a20a5133acc1dc |
|
BLAKE2b-256 | 6b454d95ff046314f4185dd0a50204d0e9bed10663e837c41c4cce14e3b6be19 |
Hashes for pycryptodome-3.17-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87e2ca3aa557781447428c4b6c8c937f10ff215202ab40ece5c13a82555c10d6 |
|
MD5 | f7c1248493a598f5aaf877a11af3af37 |
|
BLAKE2b-256 | 4402f28982e35dedde733ac2be8d890e42e752b39df8db0487dcc8923339ec06 |
Hashes for pycryptodome-3.17-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba2d4fcb844c6ba5df4bbfee9352ad5352c5ae939ac450e06cdceff653280450 |
|
MD5 | a7eaf039fc6ae198f176d1b1f32b6a7b |
|
BLAKE2b-256 | 683f58dcf1905579f0124aecb00860c0e7f829b0694baf1e2878ba5c079b6b30 |
Hashes for pycryptodome-3.17-cp27-cp27m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 121d61663267f73692e8bde5ec0d23c9146465a0d75cad75c34f75c752527b01 |
|
MD5 | d4fc4818a30e666001650efa2ad3dfdc |
|
BLAKE2b-256 | 8ebbeeb7a1d70b53234fefdc338b5808fa7fe0063144d09087a1ed3baddc6e93 |
Hashes for pycryptodome-3.17-cp27-cp27m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9453b4e21e752df8737fdffac619e93c9f0ec55ead9a45df782055eb95ef37d9 |
|
MD5 | 661bbcf856ba03756a4c55511ad3c1c0 |
|
BLAKE2b-256 | 752510831dec324a285cc54e476ce5982b9b81a60a49b67b1751ae879cd602d5 |
Hashes for pycryptodome-3.17-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f812d58c5af06d939b2baccdda614a3ffd80531a26e5faca2c9f8b1770b2b7af |
|
MD5 | a1bf3b63597ffb80a7a93e30d6d59ec7 |
|
BLAKE2b-256 | f5c681a181a8ef514ec3ecd8c498e13f8cec3a75caff2c501672d0e4993e1afc |
Hashes for pycryptodome-3.17-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04779cc588ad8f13c80a060b0b1c9d1c203d051d8a43879117fe6b8aaf1cd3fa |
|
MD5 | bbbdec182f7b242ac8f8af0e23f70b3e |
|
BLAKE2b-256 | 4b7e652bae880c1e63efa0da60ed0c8709d82aa853557d51113098db217f3f0d |
Hashes for pycryptodome-3.17-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c5631204ebcc7ae33d11c43037b2dafe25e2ab9c1de6448eb6502ac69c19a56 |
|
MD5 | e58de2d90ae2553b5ede3155ba1d9785 |
|
BLAKE2b-256 | b01925bbc06ab3556803635a3ef2dc334eb5aa5d546083f26bc6d2d553ce2786 |