Skip to main content

A pure-Python Rijndael (AES) and PBKDF2 library. Python 2.7 and Python3 compatible.

Project description

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.

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

pprp-0.2.7.tar.gz (8.5 kB view details)

Uploaded Source

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

Hashes for pprp-0.2.7.tar.gz
Algorithm Hash digest
SHA256 d9e76779cc52b0938dbc7f5727a195dc4c6075c3eb504025611a59b7636b930d
MD5 bdece6122ca59a74d2cc39ad31ca5c13
BLAKE2b-256 7d8a6bcc32e0f6cf0a9e0132230cb41652bd3df3dbdb0e673e31b720b6111deb

See more details on using hashes here.

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