Scrypt for Python
Project description
There are a lot of different scrypt modules for Python, but none of them have everything that I’d like, so here’s One More1.
Features
Requirements
Python 2.7 or 3.4 or so. Pypy 2.2 also works. Older versions may or may not.
If you want speed: libscrypt 1.8+ (older may work) or py-scrypt 0.6+
Usage
from pylibscrypt import * # Print a raw scrypt hash in hex print(scrypt('Hello World', 'salt').encode('hex')) # Generate an MCF hash with random salt mcf = scrypt_mcf('Hello World') # Test it print(scrypt_mcf_check(mcf, 'Hello World')) print(scrypt_mcf_check(mcf, 'HelloPyWorld'))
Versioning
The package has a version number that can be read from python like so:
print(pylibscrypt.__version__)
The version number is of the form X.Y.Z. The number X will only be incremented if an incompatible change is done, but this is not planned. The number Y will be incremented for new features or API for which a caller may wish to check. The last number will be incremented for bugfix-only releases.
Development
Development happens on GitHub2. If you find a bug, please open an issue there.
tests.py tests both implementations with some quick tests. Running either implementation directly will also compare to scrypt test vectors from the paper but this is slow for the Python version unless you have pypy. The best way to report a bug is to also provide a new test that fails, but that is not required.
The run_coverage.sh script calls coverage.py5 to report test coverage. If you would like to include a new feature, it should be adequately covered with tests.
TODO
Embed C implementation for when there’s no system library?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.