Skip to main content

Logo: кошка Свинья

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

Metadata

Release files for catpig 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for catpig 0.3.0
File Size Uploaded
catpig-0.3.0.tar.gz 3.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for catpig 0.3.0
File Interpreter ABI Platform
catpig-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.7 kB

Release files / catpig-0.3.0.tar.gz

Download URL catpig-0.3.0.tar.gz
Size 3.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9def934f7437c4bf9c22757bf1eeac90422e9c87afe43ca23a33c401205c4ec7
BLAKE2b-256 checksum
How to use checksums
1d4583115d7651636c9696fcb64a3877019d5915922e600bcea6d86723dabeec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.2

Release files / catpig-0.3.0-py3-none-any.whl

Download URL catpig-0.3.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
043361801fefd486d731db7baf2084a6ffe28ddf2b8febaf46e5d9a950aa75e0
BLAKE2b-256 checksum
How to use checksums
d4511848e195501ac3725de1be873cdb2621dc5c1268de6d66f11bd97ba1d7aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.2

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.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