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.
Metadata
Release files for pprp 0.2.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pprp-0.2.7.tar.gz | 8.5 kB | Without provenance | Details for pprp-0.2.7.tar.gz |
Release files / pprp-0.2.7.tar.gz
| Download URL | pprp-0.2.7.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d9e76779cc52b0938dbc7f5727a195dc4c6075c3eb504025611a59b7636b930d
|
|
BLAKE2b-256 checksum How to use checksums |
7d8a6bcc32e0f6cf0a9e0132230cb41652bd3df3dbdb0e673e31b720b6111deb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for pprp 0.2.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.