A pure-Python Rijndael (AES) and PBKDF2 library. Python 2.7 and Python3 compatible.
Project description
Overview
This package was a remedy to there being no PyPI-published, pure-Python Rijndael (AES) implementations, and that nothing available, in general, was compatible with both Python2 and Python3. The same is true of the PBKDF2 key-expansion algorithm.
The encryptor takes a source generator (which yields individual blocks). There are source-generators provided for both data from a variable and data from a file. It is trivial if you'd like to write your own. The encryptor and decryptor functions are written as generators. Decrypted data has PKCS7 padding. A utility function is provided to trim this (trim_pkcs7_padding).
The implementation includes Python2 and Python3 implementations of both Rijndael and PBKDF2, and chooses the version when loaded.
The default block-size is 128-bits in order to be compatible with AES.
This project is also referred to as pprp, which stands for "Pure Python Rijndael and PBKDF2".
Installation
Install via pip:
$ sudo pip install pprp
Example
Encrypt and decrypt the data, and compare the results. This was copied directly from the unit-test.
passphrase = 'password'.encode('ASCII')
salt = 'salt'.encode('ASCII')
key_size = 32
data = "this is a test" * 100
data_bytes = data.encode('ASCII')
key = pprp.pbkdf2(passphrase, salt, key_size)
# Create a source from available data.
sg = pprp.data_source_gen(data_bytes)
# Feed the source into the encryptor.
eg = pprp.rijndael_encrypt_gen(key, sg)
# Feed the encryptor into the decryptor.
dg = pprp.rijndael_decrypt_gen(key, eg)
# Sink the output into an IO-stream.
decrypted = pprp.decrypt_sink(dg)
# self.assertEquals(data_bytes, decrypted)
Notes
The generators can take a block-size in the event that you don't want the default. The default block-size can also be changed via the PPRP_BLOCK_SIZE environment variable.
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
File details
Details for the file pprp-0.2.7.tar.gz
.
File metadata
- Download URL: pprp-0.2.7.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9e76779cc52b0938dbc7f5727a195dc4c6075c3eb504025611a59b7636b930d |
|
MD5 | bdece6122ca59a74d2cc39ad31ca5c13 |
|
BLAKE2b-256 | 7d8a6bcc32e0f6cf0a9e0132230cb41652bd3df3dbdb0e673e31b720b6111deb |