Skip to main content

Super easy asymmetric encryption for python

Project description

Super easy asymmetric encryption for python


python-asymcrypt is a wrapper around pycryptodome to make it even more easier for asymmetric encryption.


With pip

pip install asymcrypt


Generate keys files

import asymcrypt


Encrypt data

data = 'A string, not an unicode'
encrypted_data = asymcrypt.encrypt_data(data,'my_public_key_file.pem')

Decrypt data

data = asymcrypt.decrypt_data(encrypted_data,'my_private_key_file.pem')

Unicode, Str, Bytes

asymcrypt is using pycryptodome which is awaiting, for data, bytes for python3 or str for python2. So it is preferable to use these types. Nevertheless, asymcrypt provides a type detection, it will keep the type you used at encryption time for the decryption time :

For python 2, if you use unicode data for encryption, it will be automatically encoded as utf-8 str before encryption and decoded back to unicode after decryption. If you use str data, no encoding/decoding will be done.

For python 3, if you use str data for encryption, it will be automatically encoded as utf-8 bytes before encryption and decoded back to str after decryption. If you use bytes data, no encoding/decoding will be done.


As an option, you can use passphrase option in each functions to generate encrypted keys and read them when using encrypt/decrypt_data() functions


By default, output/input are binary. Nevertheless, you can encode into base64 in encrypt_data() by using option out_format='base64' or decode from base64 in decrypt_data() by using option in_format='base64'

Command line

Asymcrypt provides 3 commands :

To generate keys pair

asymgenkeys -priv private_key.pem -pub public_key.pem

To encrypt

asymencrypt -k public_key.pem -in file_to_encrypt.txt -out dest_file.enc

To decrypt

asymdecrypt -k private_key.pem -in encrypted_file.enc -out dest_file.txt

Note : you may use option -b or --base64 to encode/decode in base64 and -p or --passphrase to specify a passphrase to encrypt/decrypt keys

Note 2 : If you do not specify -in or -out in above commands, the standard input/output will be used.

Compatibility with openssl

asymcrypt uses RSA keys, RSA encryption protocol according to PKCS#1 OAEP, AES with EAX AEAD mode. The keys will be encrypted with scrypt And AES128-CBC if a passphrase is provided. The encrypted data keep track of the original python data type. All these make impossible to use openssl directly to decode files generated by asymcrypt.


0.0.10 (2019-05-24)

  • Use Python 3.6 in Pipfile

0.0.9 (2019-02-06)

  • fix asymdecrypt script

0.0.6 (2018-10-02)

  • Keep track of orginal data type (unicode, str, bytes)

0.0.4 (2018-10-01)

  • Add console commands

  • Keys files are now cached

0.0.2 (2018-09-28)

  • First running version

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asymcrypt-0.0.10.tar.gz (5.2 kB view hashes)

Uploaded source

Built Distribution

asymcrypt-0.0.10-py2.py3-none-any.whl (8.4 kB view hashes)

Uploaded 2 7

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page