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

  • No notable change

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', force=True) # 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', force=True) # 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.4.tar.gz (84.5 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.4-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.4-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.4-cp314-cp314t-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14tmacOS 14.0+ ARM64

scrypt-0.9.4-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.4-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.4-cp314-cp314-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

scrypt-0.9.4-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.4-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.4-cp313-cp313-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

scrypt-0.9.4-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.4-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.4-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.4-cp312-cp312-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

scrypt-0.9.4-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.4-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.4-cp311-cp311-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

scrypt-0.9.4-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.4-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.4-cp310-cp310-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

scrypt-0.9.4-cp39-cp39-win_amd64.whl (47.3 kB view details)

Uploaded CPython 3.9Windows x86-64

scrypt-0.9.4-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.4-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.4-cp39-cp39-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

scrypt-0.9.4-cp38-cp38-win_amd64.whl (47.2 kB view details)

Uploaded CPython 3.8Windows x86-64

scrypt-0.9.4-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.4-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.4-cp38-cp38-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8macOS 14.0+ ARM64

scrypt-0.9.4-cp37-cp37m-win_amd64.whl (47.2 kB view details)

Uploaded CPython 3.7mWindows x86-64

scrypt-0.9.4-cp36-cp36m-win_amd64.whl (49.8 kB view details)

Uploaded CPython 3.6mWindows x86-64

File details

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

File metadata

  • Download URL: scrypt-0.9.4.tar.gz
  • Upload date:
  • Size: 84.5 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.4.tar.gz
Algorithm Hash digest
SHA256 0d212010ba8c2e55475ba6258f30cee4da0432017514d8f6e855b7f1f8c55c77
MD5 b6182e6027583403fcff16f2e3ff183b
BLAKE2b-256 db38c9b79f61c04fa79b8fae28213111a6f70d8249d4d789ca7030453326ab62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a8a8b39aa5c91b16ac9dcf83c26e96a096ab0b580fb614b2e9e8ce5ee77129a1
MD5 45d3a6ec5074113e611503ca8060d03a
BLAKE2b-256 4be194209fe6c9dd0b9e683c201c5d685bfc0b1621daa870918b3c9a62d85d62

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f27618f2c0ed8834f3ca3623cdf6b24f6578b43dfcea73a9ebe8e2d341031989
MD5 9f04aa6c93f42d607e93d7aae1fa0ab0
BLAKE2b-256 32f8a064c46f618e636b1e3f91a7f99c238848247345cfc72e563afd2a161bee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp314-cp314t-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7e407269cbd80ff8f853fdc36fc7fb161400d595b8941df024046aba94db13ff
MD5 d45fcfe85453f5397f617107fa2af1e8
BLAKE2b-256 9e0445b36cca742f037786ca2b30a0550645625915f6d79ddefe37854faec5ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c1b2937c29d73d9217554773d24a9e9301739e904566b3fe38890c9c0b2c6880
MD5 c3b450c673dd1eb394d7c216e30032ec
BLAKE2b-256 806e96400591f80e988c92403c1d13f088a9d3273c3c2171a776c837290d15fb

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d1eec8826012bf3dda3ce84519088deb539dfd5b459ca9d591c3e7290abac17c
MD5 974412baa107f809d0854d3bebae7363
BLAKE2b-256 79625fe4113d4cbb111b5d4c7c97d7b61644d158bdf9ef7ab0fb217c3a5532e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 add4e31ab1046551a5d95e88a8e80362823b85fac5a00e948d41518be37445e9
MD5 3d28fd040f74b45448f2de2c42d32841
BLAKE2b-256 1259baa438676f66355ea90dd235bd9bb9cfb4f3c8d4397852cbba1d5bc727c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scrypt-0.9.4-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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6ae6a0f7ccf7df9f0612b9166abbff5b6dacc41661044a0d090111aeb5e0bcf2
MD5 f64d74a4b3daa9e2e4da04ca1ec5ff39
BLAKE2b-256 980df62590144acf914a2eb4c3689cc6a2ca737a379962b0358f00dd0a1445cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee29481f0751eb4e91c4fca8895d44822d523225c796e0ed016a550e7f20f582
MD5 911603e1e4dd0438e37371825be9e335
BLAKE2b-256 87c0d59f086fc8a589db06eac0b3829e2956de7a4c34d7c99c20b3cf6a858627

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 efaa359fab4682215d8826c5ff6ecda525d37eabfc0da4ab197a3fd95e6d5f87
MD5 ad4843759d33f647a72b27a0d957f83e
BLAKE2b-256 32d9076f90cb1086e32ebab30123952f4f162c80c53b8814e35bedb4aa720241

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 58f424ac1656d342b2651bf5577f1b2aad9959c2e41ebbadf591035b372368a9
MD5 d6dcacaf60b2386d6de362d73a2a853f
BLAKE2b-256 aa2298e17e1ea6461a5c51c866192304182846fd004852f789dfece9f44c6553

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scrypt-0.9.4-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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6266a455bf8a66facbebd466d34559414ef595421b231d379bde86e0a7e28ca2
MD5 8f53ed970fa21d4f07a78ef1a142831c
BLAKE2b-256 858512f92696774363e765afec9da4d65d36c3e485479e61aca8982c81807e0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2d2491f7078b128b1245022062fbaebd7b80f9716761f1205d53810776d30c1d
MD5 7c00e48146c867bed4a70785030a937d
BLAKE2b-256 0234817122cce4baa7594565bb278787a76a46bea0e023c99d12ca830071cf51

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3dc43bef0223eb4cb5fff6bbfeacc36be0bb5ef8e0b096e299a13ff9693538e1
MD5 d7cac3b77d2f4d3470aa0d0b82caaa99
BLAKE2b-256 819af7956242e8ea68f62af8ae10c6cce8937f1590f10adc6599e218ea6149bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0779702be09a3356db8ae38028b9c5572e157e16154073ea189d79acee912fb7
MD5 a6a9ebb0506b2a7a66ce8db12a3e2f88
BLAKE2b-256 dd8d28dab212c8b1e2068222bed0ff4079be0881f9ec40139c9ae722f4c7cf53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 349b158aa343205b3ffe38d72e53c70154583bfad098ef7c506172e3f65e9315
MD5 20889773892081c136e682b07b882ce7
BLAKE2b-256 4e55ff977b5fb5fd1d1a802e8ded5fcecbf3cf7d1212f645a48d451a1597db84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scrypt-0.9.4-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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 70b075248a9f37dec3c2dee2d1c0dd3a286376793ee9f8736376cb510bed6682
MD5 8124b1ead0a0c7e22a4c2a868dfbc94f
BLAKE2b-256 18c84fb946ee41f5df40ba79a1b2c01a041be621c74de50d8720c4a333f46c94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56f3346e17a57ea6f9a0ae913fea640bd98009c269ae73d4d2d4ecbe2eb3fcfa
MD5 0aa253bee72fe491c345e880c048afdf
BLAKE2b-256 1f181b73edc9cf04657c910e920860c8472a3708aba7c32bb251a670e128c408

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e42d4ed846a3641e7112ff54bfde5c026910d8bffe5ff647b43422c99422d981
MD5 d66723ba4fbff44650d943a91aa18db1
BLAKE2b-256 6d6a4b96cd10b32282b1f497d149b519baeafb8d4ed22d82d48539aca2c5e090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e33a200c5bb9350f673bbc4582fe77a5df782eb3784a971b71401f63a3fc72ad
MD5 fab4a9877baee72b006ac9155b24e88e
BLAKE2b-256 302719f15e85a906c6fe3b664071ffb3961c237a7410013a3de5cab21ad66d85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scrypt-0.9.4-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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 44149e897a2f28dc6b445bbdb740e459b1f1114a608c9cbd496fd10698b6b817
MD5 356b40663c0fcaa4d48a089af2efebc9
BLAKE2b-256 32e664dd0ec2d45d851145b902424f10a9635f492c775aa6ae2904ddbe1f7cf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5be616494bd646bf00a00ee8739fac3581c9326369cf4439889ff385be0fc17f
MD5 355d304aca3b054f6331706fa7591fd2
BLAKE2b-256 4a7a2bd4606767c276baa8b14c81bee4be0564bae6305ac94575d55f7b6ae0d8

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e328f0c4bda5cb86cedc26b7b50fa232a2da14c203b7c1e8688698c42fb6d77b
MD5 832fffbfd23d290efa8517dbefca0611
BLAKE2b-256 77a236769fba53e53cd168e04758d27f099a6d19e495c0d1b8cfe4d89faf9faf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 54023f235bd8b9412c26bda8e65b1dab5da4b6f533eb326c27fb0c9287cd5d46
MD5 af8036264644f1cfe5d483bacd87f0b4
BLAKE2b-256 a4f3ad45d58cc1294d51cff10be752850370f37061a59b7287ed127cffbc6888

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: CPython 3.9, 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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c365d6c5d9372f4a708b0026a970b776eacbd2ba18b224f89ade93512930224b
MD5 322695bd568b93b9e2bad79ce55b082a
BLAKE2b-256 eed9bf5e1930f02133c115607b949c820d041c279ecf7805d5168bd7b6bd3285

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e73979bb1557c95c433abc93f575fa47b348e57a6be2ac98a2ef752d0c69a689
MD5 54d12b97622b893d33cfbf0b06ce1d4a
BLAKE2b-256 83ddd4e7d0b435428918eff071cde475f4fc2bba649e0c2277a1096f0631b9cc

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e7c06e44d8b32fa96acb899b329b5f7c129b452b60787087847520d9bfc6931
MD5 1b60891dd4ce775f3c20e3ac545e77c4
BLAKE2b-256 2f3e4d02546eb62b8cc375569067b4fb42d7cc2de14bed6ff8ee24a0ca71a52c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 18119f0c130c1aabe12a965a27b16759c22359ff83d28454dcdcc4368a135ac9
MD5 f120cc97e76c378b4cea8d4ee47cf9f3
BLAKE2b-256 80e348ef1b431b0d04ffa9e07791a36c8019a61a4fdd6750b5e31f940b5fbe76

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 47.2 kB
  • Tags: CPython 3.8, 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.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 eb07778e27f882ac3a110c9c3f3b900c8b6ec3255be2e4cf66748f37446fae84
MD5 3149e5b6cdef42cc290003804cd8fe56
BLAKE2b-256 36d288bb075fbf5e66597d2921fc07a23c9bc26329013934edf7a8b974b7c1fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 086966395a1cb46e7a09dda45d38422c6ad61ea88aff8ae40ff6881a5a4fafca
MD5 87e1b0cbc2a3b76ac0e417a3f5529b4b
BLAKE2b-256 5dbf40ecb0d0c5662cce8aa26e5f56c6172e84f23abe1caf0ebed2f745184721

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-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.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c88ce5916c2614a5d5b670208e6c7edc04bfe6c3205be843628ba265213f963
MD5 e30d02ce58bb48431774f5011f26120e
BLAKE2b-256 cfdd5fcaa97c92ff57a3d993480ce119937dd03d5b30ea27ff4efad6a075865f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.4-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0d36a47921fe1d9421cb4eb671f2d352e92a303b4c7aa78693b7bcad450c66b9
MD5 71093aaa5b24d7ee6f944517f6c847fe
BLAKE2b-256 32510812b922e8ffdb43ec1006bc9485ee98c501e64ba59337abb927eaef6d87

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 47.2 kB
  • Tags: CPython 3.7m, 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.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2fddfb12c211cfcba4abc97a16c567d3d200dd817b5f840b83798b4864550a9e
MD5 e7f13069ec3ca02878a4a2e8ddbc5f78
BLAKE2b-256 18accb9d11855f3dc9921b1864dc63878c850f27e9284e9455d2e5dbb0ca60ef

See more details on using hashes here.

File details

Details for the file scrypt-0.9.4-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: scrypt-0.9.4-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 49.8 kB
  • Tags: CPython 3.6m, 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.4-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 aefbd02ad89299c5e1f097c4217ebcfc09e42666621a2ebd13717fc9b05f5bb5
MD5 fde5d277afb98225083c201a9d8bb1dc
BLAKE2b-256 7dd97f47eb469f00e58073ae24d7cc2ea9b6e86f5489ee5299e3d7ee5f427581

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