Skip to main content

Bindings for the scrypt key derivation function library

Project description

This is a set of Python bindings for the scrypt key derivation function.

Latest Version https://anaconda.org/conda-forge/scrypt/badges/version.svg https://anaconda.org/conda-forge/scrypt/badges/downloads.svg

Scrypt is useful when encrypting password as it is possible to specify a minimum amount of time to use when encrypting and decrypting. If, for example, a password takes 0.05 seconds to verify, a user won’t notice the slight delay when signing in, but doing a brute force search of several billion passwords will take a considerable amount of time. This is in contrast to more traditional hash functions such as MD5 or the SHA family which can be implemented extremely fast on cheap hardware.

Installation

Or you can install the latest release from PyPi:

$ pip install scrypt

Users of the Anaconda Python distribution can directly obtain pre-built Windows, Intel Linux or macOS / OSX binaries from the conda-forge channel. This can be done via:

$ conda install -c conda-forge scrypt

If you want py-scrypt for your Python 3 environment, just run the above commands with your Python 3 interpreter. Py-scrypt supports both Python 2 and 3.

From version 0.6.0 (not available on PyPi yet), py-scrypt supports PyPy as well.

Build From Source

For Debian and Ubuntu, please ensure that the following packages are installed:

$ sudo apt-get install build-essential libssl-dev python-dev

For Fedora and RHEL-derivatives, please ensure that the following packages are installed:

$ sudo yum install gcc openssl-devel python-devel

For OSX, please do the following:

$ brew install openssl
$ export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
$ export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"

For OSX, you can also use the precompiled wheels. They are installed by:

$ pip install scrypt

For Windows, please use the precompiled wheels. They are installed by:

$ pip install scrypt

For Windows, when the package should be compiled, the development package from https://slproweb.com/products/Win32OpenSSL.html is needed. It needs to be installed to C:OpenSSL-Win64 or C:Program FilesOpenSSL.

It is also possible to use the Chocolatey package manager to install OpenSSL:

` choco install openssl `

You can install py-scrypt from this repository if you want the latest but possibly non-compiling version:

$ git clone https://github.com/holgern/py-scrypt.git
$ cd py-scrypt
$ python setup.py build

Become superuser (or use virtualenv):
# python setup.py install

Run tests after install:
$ python setup.py test

Changelog

0.9.0

  • Update to scrypt 1.3.3

0.8.29

  • Fix build for OSX using openssl 3.0

  • Build Wheel for Python 3.13

  • switch to ruff

0.8.24

  • Building of all wheels works with github actions

0.8.20

  • Fix #8 by adding missing gettimeofday.c to MANIFEST.in

0.8.19

0.8.18

  • add wheel for python 3.9

0.8.17

  • add_dll_directory for python 3.8 on windows, as importlib.util.find_spec does not search all paths anymore

0.8.16

  • Add additional test vector from RFC (thanks to @ChrisMacNaughton)

0.8.15

  • Fix missing import

0.8.14

  • fix imp deprecation warning

0.8.13

  • improve build for conda forge

0.8.12

  • Add SCRYPT_WINDOWS_LINK_LEGACY_OPENSSL environment variable, when set, openssl 1.0.2 is linked

0.8.11

  • fix build for conda feedstock

0.8.10

  • fix typo

0.8.9

  • use the static libcrypto_static for windows and openssl 1.1.1

0.8.8

  • setup.py for windows improved, works with openssl 1.0.2 and 1.1.1

0.8.7

  • setup.py for windows fixed

0.8.6

  • setup.py fixed, scrypt could not be imported in version 0.8.5

0.8.5

  • MANIFEST.in fixed

  • scrypt.py moved into own scrypt directory with __init__.py

  • openssl library path for osx wheel repaired

0.8.4

  • __version__ added to scrypt

  • missing void in sha256.c fixed

0.8.3

  • scrypt updated to 1.2.1

  • Wheels are created for python 3.6

Usage

For encryption/decryption, the library exports two functions encrypt and decrypt:

>>> import scrypt
>>> data = scrypt.encrypt('a secret message', 'password', maxtime=0.1) # This will take at least 0.1 seconds
>>> data[:20]
'scrypt\x00\r\x00\x00\x00\x08\x00\x00\x00\x01RX9H'
>>> scrypt.decrypt(data, 'password', maxtime=0.1) # This will also take at least 0.1 seconds
'a secret message'
>>> scrypt.decrypt(data, 'password', maxtime=0.05) # scrypt won't be able to decrypt this data fast enough
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
scrypt.error: decrypting file would take too long
>>> scrypt.decrypt(data, 'wrong password', maxtime=0.1) # scrypt will throw an exception if the password is incorrect
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
scrypt.error: password is incorrect

From these, one can make a simple password verifier using the following functions:

import os
import scrypt

def hash_password(password, maxtime=0.5, datalength=64):
    """Create a secure password hash using scrypt encryption.

    Args:
        password: The password to hash
        maxtime: Maximum time to spend hashing in seconds
        datalength: Length of the random data to encrypt

    Returns:
        bytes: An encrypted hash suitable for storage and later verification
    """
    return scrypt.encrypt(os.urandom(datalength), password, maxtime=maxtime)

def verify_password(hashed_password, guessed_password, maxtime=0.5):
    """Verify a password against its hash with better error handling.

    Args:
        hashed_password: The stored password hash from hash_password()
        guessed_password: The password to verify
        maxtime: Maximum time to spend in verification

    Returns:
        tuple: (is_valid, status_code) where:
            - is_valid: True if password is correct, False otherwise
            - status_code: One of "correct", "wrong_password", "time_limit_exceeded",
              "memory_limit_exceeded", or "error"

    Raises:
        scrypt.error: Only raised for resource limit errors, which you may want to
                    handle by retrying with higher limits or force=True
    """
    try:
        scrypt.decrypt(hashed_password, guessed_password, maxtime, encoding=None)
        return True, "correct"
    except scrypt.error as e:
        # Check the specific error message to differentiate between causes
        error_message = str(e)
        if error_message == "password is incorrect":
            # Wrong password was provided
            return False, "wrong_password"
        elif error_message == "decrypting file would take too long":
            # Time limit exceeded
            raise  # Re-raise so caller can handle appropriately
        elif error_message == "decrypting file would take too much memory":
            # Memory limit exceeded
            raise  # Re-raise so caller can handle appropriately
        else:
            # Some other error occurred (corrupted data, etc.)
            return False, "error"

# Example usage:

# Create a hash of a password
stored_hash = hash_password("correct_password", maxtime=0.1)

# Verify with correct password
is_valid, status = verify_password(stored_hash, "correct_password", maxtime=0.1)
if is_valid:
    print("Password is correct!")  # This will be printed

# Verify with wrong password
is_valid, status = verify_password(stored_hash, "wrong_password", maxtime=0.1)
if not is_valid:
    if status == "wrong_password":
        print("Password is incorrect!")  # This will be printed

# Verify with insufficient time
try:
    # Set maxtime very low to trigger a time limit error
    is_valid, status = verify_password(stored_hash, "correct_password", maxtime=0.00001)
except scrypt.error as e:
    if "would take too long" in str(e):
        print("Time limit exceeded, try with higher maxtime or force=True")

        # Retry with force=True
        result = scrypt.decrypt(stored_hash, "correct_password", maxtime=0.00001, force=True, encoding=None)
        print("Forced decryption successful!")

The encrypt function accepts several parameters to control its behavior:

encrypt(input, password, maxtime=5.0, maxmem=0, maxmemfrac=0.5, logN=0, r=0, p=0, force=False, verbose=False)
Where:
  • input: Data to encrypt (bytes or str)

  • password: Password for encryption (bytes or str)

  • maxtime: Maximum time to spend in seconds

  • maxmem: Maximum memory to use in bytes (0 for unlimited)

  • maxmemfrac: Maximum fraction of available memory to use (0.0 to 1.0)

  • logN, r, p: Parameters controlling the scrypt key derivation function - If all three are zero (default), optimal parameters are chosen automatically - If provided, all three must be non-zero and will be used explicitly

  • force: If True, do not check whether encryption will exceed the estimated memory or time

  • verbose: If True, display parameter information

The decrypt function has a simpler interface:

decrypt(input, password, maxtime=300.0, maxmem=0, maxmemfrac=0.5, encoding='utf-8', verbose=False, force=False)
Where:
  • input: Encrypted data (bytes or str)

  • password: Password for decryption (bytes or str)

  • maxtime: Maximum time to spend in seconds

  • maxmem: Maximum memory to use in bytes (0 for unlimited)

  • maxmemfrac: Maximum fraction of available memory to use

  • encoding: Encoding to use for output string (None for raw bytes)

  • verbose: If True, display parameter information

  • force: If True, do not check whether decryption will exceed the estimated memory or time

But, if you want output that is deterministic and constant in size, you can use the hash function:

>>> import scrypt
>>> h1 = scrypt.hash('password', 'random salt')
>>> len(h1)  # The hash will be 64 bytes by default, but is overridable.
64
>>> h1[:10]
'\xfe\x87\xf3hS\tUo\xcd\xc8'
>>> h2 = scrypt.hash('password', 'random salt')
>>> h1 == h2 # The hash function is deterministic
True

The hash function accepts the following parameters:

hash(password, salt, N=1<<14, r=8, p=1, buflen=64)
Where:
  • password: The password to hash (bytes or str)

  • salt: Salt for the hash (bytes or str)

  • N: CPU/memory cost parameter (must be a power of 2)

  • r: Block size parameter

  • p: Parallelization parameter

  • buflen: Output buffer length

The parameters r, p, and buflen must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N must be a power of 2 greater than 1. N, r, and p must all be positive.

For advanced usage, the library also provides two utility functions:

  • pickparams(maxmem=0, maxmemfrac=0.5, maxtime=5.0, verbose=0): Automatically chooses optimal scrypt parameters based on system resources. Returns (logN, r, p) tuple.

  • checkparams(logN, r, p, maxmem=0, maxmemfrac=0.5, maxtime=5.0, verbose=0, force=0): Verifies that the provided parameters are valid and within resource limits.

Acknowledgements

Scrypt was created by Colin Percival and is licensed as 2-clause BSD. Since scrypt does not normally build as a shared library, I have included the source for the currently latest version of the library in this repository. When a new version arrives, I will update these sources.

Kelvin Wong on Bitbucket provided changes to make the library available on Mac OS X 10.6 and earlier, as well as changes to make the library work more like the command-line version of scrypt by default. Kelvin also contributed with the unit tests, lots of cross platform testing and work on the hash function.

Burstaholic on Bitbucket provided the necessary changes to make the library build on Windows.

The python-appveyor-demo repository for setting up automated Windows builds for a multitude of Python versions.

License

This library is licensed under the same license as scrypt; 2-clause BSD.

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

scrypt-0.9.1.tar.gz (83.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

scrypt-0.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp314-cp314t-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14tmacOS 14.0+ ARM64

scrypt-0.9.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp314-cp314-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

scrypt-0.9.1-cp313-cp313-win_amd64.whl (47.3 kB view details)

Uploaded CPython 3.13Windows x86-64

scrypt-0.9.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

scrypt-0.9.1-cp313-cp313-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

scrypt-0.9.1-cp312-cp312-win_amd64.whl (47.3 kB view details)

Uploaded CPython 3.12Windows x86-64

scrypt-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

scrypt-0.9.1-cp312-cp312-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

scrypt-0.9.1-cp311-cp311-win_amd64.whl (47.3 kB view details)

Uploaded CPython 3.11Windows x86-64

scrypt-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

scrypt-0.9.1-cp311-cp311-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

scrypt-0.9.1-cp310-cp310-win_amd64.whl (47.3 kB view details)

Uploaded CPython 3.10Windows x86-64

scrypt-0.9.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

scrypt-0.9.1-cp310-cp310-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

scrypt-0.9.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

scrypt-0.9.1-cp39-cp39-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

scrypt-0.9.1-cp38-cp38-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

scrypt-0.9.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

scrypt-0.9.1-cp38-cp38-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8macOS 14.0+ ARM64

File details

Details for the file scrypt-0.9.1.tar.gz.

File metadata

  • Download URL: scrypt-0.9.1.tar.gz
  • Upload date:
  • Size: 83.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for scrypt-0.9.1.tar.gz
Algorithm Hash digest
SHA256 cfc33ce16fcac3d1c6b4371f2aba55e189df7197c7b5b29b7aef007ef4a9889b
MD5 6f2d588a5c613c0e5ea507ed2260184f
BLAKE2b-256 65242d903a9b0475ab95bcaba06339b8df6eeef368caa5b8d93ee7b7640413fc

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4bed927cb3b86f35ee658b3e477165b3db5887cf5e827f5056d318d863f38b9f
MD5 b8186adbf0a8153b3acd3570e1fcbf1d
BLAKE2b-256 a8a03297cf6e9cdf2ab4186c0e910f51b5bbd6f2e6d12189b532de9130170e84

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0306dab65aa47b1ff7825a25261fe5763510f3c26aa56f132dc80a7a0eebf20f
MD5 467a5baccbb0412dff735781b553b359
BLAKE2b-256 6df0cfff3184c4734c97f8b85b1d6a10e31425c04bc90abb9176190240778c8f

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314t-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314t-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9c18ba297a49b2e5baa8a8fd68add7fc3bd0590bd07267dc24dec8989fd6d7fe
MD5 7272154889fa2f3202337c0092a6c62d
BLAKE2b-256 95bfe57e61d4a0535734428100fa4c3914eaa5a781560782a4f531809b7f7843

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f38ef3c3f66d5db37b15d98dda9c48f9b56315a00c32db4f4c72668c36faf6e6
MD5 bfa12ad96b6e187cf4b550c7ee0c458a
BLAKE2b-256 674ed97a44ad5450ac1a8c74e56178cdb5065e2d8a70895e4d6535b11fe8c1c3

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b11b751d9bcbab2b5b371578f684a202acb77fd67b41235202c39d26caee340
MD5 7ab8787ddce1f10e418804f0fac3d630
BLAKE2b-256 8df2bbb60385b200b78f506256bbd3cb87764552c3bb73a3983e50f31167bddf

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5a920de985d03ac5dd120e61a8af312a8398334a3ff14ccf8ed8993125ee1eb8
MD5 7abdfe3b2eed87cea879b28d343975a2
BLAKE2b-256 32bc33bd30c49978298e7bcb6321dab8caceba627c6070b925903bdae3a68f49

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for scrypt-0.9.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0cc7a6b864ab966f4c7369b52063be808973380735bac0325027b5ca73e0e91a
MD5 08d5b774da1ac5517cca9603796c02c6
BLAKE2b-256 fae4ac5ee5f155d1b3839fded2920e1d1aff4c200bc22381c67fa7416d7f40df

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73442c58746c322d6c3ada66fe18a3632234e7ccdbee8c1d5bb4c1ac6ba3950a
MD5 88102ad495c7b48d8c51700eae7d9718
BLAKE2b-256 e33399add58c9c790f2b41075989525d96d95bbb1fddbe3e3216625f0521bfc6

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4809c2143c57adfaa2c36388de2a6fedbbb7270ea105d43f073130b36dbed61a
MD5 5933429b21cfc1d9090714be83a3bc7c
BLAKE2b-256 3f005a08a646d5fd264a2b6926d62dc4b9df25f9161b6cc5f1592cb74f53e82a

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da19208e61f1d09f2899bcfd70af31b6e8c4ff64ad72003542bde6e7bfb7842f
MD5 acb76798a097f8f345daf7b5f6c492b5
BLAKE2b-256 8ad2503165159ddfc87ba9a23c3eaeb991416b4a5c03cd6c904ef005cf96b7f5

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ccdb33ea7fe921a619d9e580b880b3b6f82ca42189aada37221b7475993a6c55
MD5 de478bb7e55018404ca808888260564e
BLAKE2b-256 eb7839528706a2032b87c7b3a4d5d14924be215994cd5d269b71c1f93edb9a2a

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for scrypt-0.9.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3f3a91fc132fd651f2d9836d6efbf7afb44970ee337458f844e734f7ee6739e6
MD5 cbbf1e5a4b3957b0f8c5d3687511dbcf
BLAKE2b-256 803526e8f44eaeb96be92a9e42ee6082efc9bfaa937bd7a7cc59d6d72e009ecd

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 62b5df0b66c022890501504ebcc591fce0727aa535cb4154c480b3611a6de461
MD5 3fa2eed7b13eaf195ed24c20a1e4a3ad
BLAKE2b-256 1d8ad66499549046e04ac543f395d7a52dce71fb12b06ce10e62cf7b2a95f375

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc91b36cb5f1189b6222c1e08b56317d2f8ea9699062a1d730a012fd4856b38b
MD5 bce4656e3995ff5ca8ac25cf632f9cdd
BLAKE2b-256 3c060a03b63da9329fa8a98181f0064e7f940252e8f5da662b7c2a92fc7827f5

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2481202ffa2c2e072fa9af541afa5712bef4e8cdee754112e4013e5d8df0aaa2
MD5 1bb5a4929f25cdd590397889b5a03060
BLAKE2b-256 afe107f6974f8363af6e36afcda9a099db6abef33b437363f67891beeb2e076f

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 06790e487b7daaca074c3c4d9675b6bb81351e997b7d289b5534c2e1784130d7
MD5 2c6f3b412f9c1371486c3792e2696a86
BLAKE2b-256 bc6ccd66ff3169ba7470701b11cbb667271ac04e1ee26fdcee31f34cd0ac2d11

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for scrypt-0.9.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ac45aa8af4d2e562a37b59970956339af6a9e09691550501e6b5b9a169ff46a7
MD5 3f8a6ffb310647aff00f932c7378ddc3
BLAKE2b-256 ca792b9fa532eff1038499f4d162040446ad95af320a4f505341817aec6da518

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8ac49166484be605571ad54a05f7a98f76b1457f0880aa8b934fee160a2001ee
MD5 5ec3779b872932ac3cbc3d33f821a717
BLAKE2b-256 2c6039cd27f64f3c6aae6ae394c3be35ed7f78892e688b6377b6cc9a2ed28701

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 953c51b8bf17c3e1b5b0e19abdacc86ee89da89b2ec1633f78ebf64b0ed0de0d
MD5 b5d39408c42b88f3363a15ba557fb505
BLAKE2b-256 8effd2a8873c844f6cdc60b7432f4c7a8c13b61bff50fd84bb6c7bbd3104d068

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dcddb5a666397fb9430eafae878cbe87e311d7ad552f87650c14455b9a8ae1b6
MD5 1afaa4a0cba0dedf2fa9b7bc58e35779
BLAKE2b-256 fd3fb4e882482f97f1a35cf4847ea1b8cd5be8bd9643a1bdafdde61dce31555b

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 45e468f23f2c1f90db712e7b4fe0ff8b89ca56e7ecfe072408ddf8573d90fd36
MD5 469ef9e641e2d005af84fea6212ca28a
BLAKE2b-256 accae5bedcd73c7534da0306ebbbd22e863c778eb53abcca4a6618a9fa120bc1

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for scrypt-0.9.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1d1bac942ef17101780faba89b2a3710f1ff7d154ed3c2ce0061c94d99c42efc
MD5 9ddb5863cda8ddf16d1bbaa6b6849e9d
BLAKE2b-256 c8ad452368f566b7f8037608cbf2cf1a7d9ab8381b2500b46fcb5f1f367f119d

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2e43c2279ec300dec7db43e6e31e7e3c24c1a0bcb4e3a0936bda51b927da3468
MD5 fe7be46741e3373a374b1b4b89746e6f
BLAKE2b-256 8dd09150ee3aa9598f46032b0d1c1fcdd90a13610faefefaeb01e34347d94348

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7ad0929cd2d09d1826330397a93a09cd5a4113a509e8b1f37d5caf2d0b5c1e4
MD5 77bf8764672fed412a67f7126de974ba
BLAKE2b-256 7b4301ea5571b9b4377e3c38f33c4dd2c1f30c63cdbebfab3e83c7f8a3344dbd

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 15016572b48faa382efc6efb4888145d092108685e518515b9cdbbb2ec015189
MD5 534afb4aa76d93ab95e8b85c1c400bf2
BLAKE2b-256 15d30a5f95dc61a5b1efe4120773675f8c77cd0f4fcdf593ac9dfc4a7ec12c52

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ad3a7c41e3f61dde77f483dedded193f5518023c3e17b24913b6a99ac28d2537
MD5 d79ecafca08cbb0bb9581a15626d6baf
BLAKE2b-256 74df240934f70dfec6691fe00defdfc874ee23aa88ade933f9e2057557b83d2d

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 72fe89f193eae9c21848cbfec4baeeb8afb4da880e538e13b2e79a2dc8e27561
MD5 4ebc4908bf22266369c4e4562debf6d9
BLAKE2b-256 422fce3a7ec538ff7a0304302e1747da1399bf13e749fe5b76e7f86e6b3658c3

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b33a05621a8af77df53ee9765b16ebf9660fda27667654d75cb7d1167c55cf2
MD5 b6468094c7124e7691e79e179eb8c8c1
BLAKE2b-256 95c69a927c49062772e416441e19a62d91519410ed55c0deb8568b0ac0faf590

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21b903b7b348ccca6ffc58c53d6e30e4efe14181952c85057bd57dc5285cc2ce
MD5 2789462a381d3b5c3cbec4e10850a892
BLAKE2b-256 046120c0aade23d7157b4f5e156e6515462e4fcd42a3cf3c97cd99e07db4c80a

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 43e93379ec1200be888f036d3f3ad2ecf79064f54e4da40f6a44c0a7f2bb272a
MD5 e8f0f6f38f13a5bf5153f6f82dd92c1e
BLAKE2b-256 21e166e0d9cf646463328fd7b9464f30ed95c8a89a807b93d5e65e44c85ff755

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f933b7f97dff201b374468c5f012dcfc77b84a74d0b25c71d6e5c6e1d244f469
MD5 c3ae08ff01922c5f0feee6a31d5bd078
BLAKE2b-256 78963552fa7094918883ff0281b30e09a21a0a50428695eda6640625f0a02658

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a82897bec401e059a2f1171f163f51677ba2363cdaa48b576e07948e7963415
MD5 02ca11fd4fcf09f630683b4d8a4f3578
BLAKE2b-256 bda1ee863de43e32c1e7b53058336569dbc0b6f46ebde702c78a4d48cf22d630

See more details on using hashes here.

File details

Details for the file scrypt-0.9.1-cp38-cp38-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for scrypt-0.9.1-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 db1a8eeda2a029380652011aaabe1d6f7a9c9cb1d303871d32b7f41fadb3c43d
MD5 f1f871ecf8bcedc395b5469b3eafa7fd
BLAKE2b-256 135bb2ff3ed5f5630e99bad66417a84db2cb52c5ef9ed60a40bcf55e7865eace

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page