Skip to main content

Build Status

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.

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)

Source distribution for pprp 0.2.7
File Size Uploaded
pprp-0.2.7.tar.gz 8.5 kB Details

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

Release history Release notifications | RSS feed

This release

0.2.7 This release

1 release file

0.2.6

1 release file

0.2.5

3 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page