A memory-hard password-hashing function
Project description
catpig
catpig
is a memory-hard password-hashing function.
It uses SHAKE256
to create data that will occupy memory of a given size (space_mib
).
The data will be read in 4096-byte chunks with a pseudo-random offset and hashed by the BLAKE2b
function.
Memory access patterns during reading of the first half of a given amount of data depend only on the salt (iMHF). Memory access patterns during reading of the second half of a given amount of data also depend the results of previous steps (dMHF).
The output length is always 64 bytes.
Install
pip install catpig
Usage
from catpig.catpig import catpig
derived_key = catpig(password, salt, space_mib, passes)
password
and salt
must be bytes-like objects.
space_mib
defines the memory usage in mebibytes.
passes
defines the amount of data that will be read and hashed by the BLAKE2b
function. One pass corresponds to reading a data size equal to space_mib
.
Test vectors
>>> from catpig.catpig import catpig
>>>
>>> catpig(b'', b'', space_mib=1, passes=1).hex()
'831e43e4a352066a8ade279225d95e7543203cce8ce77348e4f7898741f32b9f1b8793393aa69cef84016d5f391aa9a7840050c5c59b9defd6cc324cb44e3e9a'
>>>
>>> catpig(password=b'password', salt=b'salt', space_mib=64, passes=4).hex()
'd1999b1a7749de88ac8b6f1d8659ccf3b1c2cfe7fd84426bddc75de4b9f57bc07293cca52bb22e0915945d462bb760dfab02d78a713e65620307bc08b8fb7905'
>>>
>>> catpig(password=b'passphrase', salt=b'NaCl', space_mib=512, passes=8).hex()
'83b6181449eb405e7bb662642090c077298e445f63846a98f18b8102df5e80f8a50dcf43f951ce8e893aac5beb23d33e5282624fd288fac4d07b8647f6c9bffe'
>>>
>>> catpig(password=b'new_passphrase', salt=b'SodiumChloride', space_mib=5000, passes=15).hex()
'b4f96ceddf5c46380f6a425ebf2a30372cccfb3e4d7d95fd1cfc7c64910142eca3b7e61c20e32db7c97c72230c3b63abf1802dc068513297b67c274267fd1dde'
Warnings
- The author is not an expert in cryptography.
catpig
has not been independently audited.
Requirements
- Python >= 3.6
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.
Source Distribution
Built Distribution
File details
Details for the file catpig-0.3.0.tar.gz
.
File metadata
- Download URL: catpig-0.3.0.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9def934f7437c4bf9c22757bf1eeac90422e9c87afe43ca23a33c401205c4ec7 |
|
MD5 | e2a388fc66c0d3bf567d3039ee16e7ed |
|
BLAKE2b-256 | 1d4583115d7651636c9696fcb64a3877019d5915922e600bcea6d86723dabeec |
File details
Details for the file catpig-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: catpig-0.3.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 043361801fefd486d731db7baf2084a6ffe28ddf2b8febaf46e5d9a950aa75e0 |
|
MD5 | a3bdad4f422805db530e249a782a281f |
|
BLAKE2b-256 | d4511848e195501ac3725de1be873cdb2621dc5c1268de6d66f11bd97ba1d7aa |