Super easy asymmetric encryption for python


Keywords
encrypt
License
LGPL-2.1
Install
pip install asymcrypt==0.0.10

Documentation

asymcrypt

Super easy asymmetric encryption for python

Introduction

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

Installation

With pip

pip install asymcrypt

Usage

Generate keys files

import asymcrypt

asymcrypt.generate_keys('my_private_key_file.pem','my_public_key_file.pem')

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.

Passphrase

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

Base64

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.