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.2.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.2-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.2-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.2-cp314-cp314t-macosx_14_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14tmacOS 14.0+ ARM64

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

Uploaded CPython 3.14macOS 14.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ ARM64

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

Uploaded CPython 3.10macOS 14.0+ ARM64

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

Uploaded CPython 3.9macOS 14.0+ ARM64

scrypt-0.9.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: scrypt-0.9.2.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.2.tar.gz
Algorithm Hash digest
SHA256 b18693032f2f864d77a950356b01d04d66750319714b03d1b5bede0fec921f0c
MD5 af2264234562c8c52bdc10c8f41e39ff
BLAKE2b-256 a73796fa9b9ec6e8247b61b9d11dc5bd5df4654f195ea5bf54d57741c1baf616

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b298362b064bd845a608ab2e1770804a4d39379400b1a6a35dc09474ecdb692e
MD5 be61cd9d782b16deeb06d895f305c2b2
BLAKE2b-256 18df15c41f748d3ed7640fe2e0934fce9265f51c383ffd1f47b2a0bf9f36d1cf

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab0e3aac66a995c5e6a61aba6512641bf5dad33483ff88185b9b7478a61844f1
MD5 7f3ed251977bb5769613dabc0117e430
BLAKE2b-256 e4897e9ba167c9388ad01ae0e8e3a7ffd31490511622ff32e22807f9de3b6f81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp314-cp314t-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d2fb9ec604e3097906f9e8e375265afc3b445646433a27ade21130223e8adf2b
MD5 a9a3d339556625f1e08eee15d9fef0f8
BLAKE2b-256 533266751d2ef18b88e0261092108662160b366cc0afcfc183e9d08e2ed4ae96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d3741d1ecf098d88e3975bb80791a2cf9611e46335156bc0a7e24914cdee0af5
MD5 30f7875a546f106084ede3e7deac8e21
BLAKE2b-256 9e29c97a5ab13e34f2a6617ca751340d21c871654daf33071f6d4307094a3d01

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e7c702195c8a984bf6c5ed2a89effec9a9a56bb1014b054983b3be1a818b6ff
MD5 dc3005bd8d25c5593381263582261f61
BLAKE2b-256 dd6fff2b4489f12a58b1a0331865c334b6f0cf16958adcd64b3822223021427c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cfe9372f720f56dd46efe96d4c2c7ccf2204e777262d0ac3bf11d57a9ced88bb
MD5 c5fcc2c6dad04aff51897b1e1ccba644
BLAKE2b-256 1cfd9c8248a9a50fee80be6c50267c085b0451ad5e48cddae77a70059b042af7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1819bf575cdb564e519da063774cd8fbcf969044517b0d59327b053b5011371f
MD5 09b1dd3d9a94d6ab0576a12423b36f69
BLAKE2b-256 7644192e956e1fb438fbfd6fd274dfccbb2bbcce818b5c23bea7e54696c58d30

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d51d1c28c34ba63075a50018b0352406e5c2fb277d65ba3df524ab371b997797
MD5 10fc94963e6b624934065fab2bdf331e
BLAKE2b-256 0ff769e91ad5473970790b8f93d7e376bbbc0d06eeb0604b1b08ddd5f924a2bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 146abd1dd97a2239b920d7e4c481315aad6113069b8da99d9b07c44cbfa74714
MD5 42a5522301cc6c604d5e63dbe6775bec
BLAKE2b-256 e4a1c5c440fc2dbdf3fa6971ef946e94689562d603b4ffd473166659fdd8e21d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92fe29911d23710075504ec8189b8dcd2b89101aa73421b06dd88bbd66f713eb
MD5 c45a46cc424841a2b5cb2a803f5e5c43
BLAKE2b-256 2f65364862423aff8c3b16739e13be8c793be31bc2abe717699ab38e9d1b2811

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e7c9e28fe6bb7ed0282dfb7dacd42b9e3cce0da13e1fb92863a6c7629792363
MD5 b33783d0c21514780c5472bd005416ae
BLAKE2b-256 2a3f7c73582eee1b0ce5cba7f722481fb72e7f7075ecfdb9bcd961ee612569cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 dac0bdceca8ae51d9804cd34788c3f5bd25c7d0dd7fb38100189d2e6044004e0
MD5 8a02e1726fb676a93bc67227993d04c3
BLAKE2b-256 ea83958e49c7f5ee0ad13efb7a0c18ffe95bfeb80d2efc06c0d366c7847d85ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 793d48b5cd5bbfa4dc28e574bbe758dddb487080452b9c52789affcace31b171
MD5 96598a70f9526d3b1a1823c85fdb46e7
BLAKE2b-256 132245cd2016cac87b33901c3257b7a55c3a87a2f7047ccc90fff511a292a619

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 323bc40d6dfdcd497e067d0423281f30c754375b90bbb2cc58f4b7aa0d227694
MD5 de226f8d6ce9fb029dca034f5a3f780a
BLAKE2b-256 cf1168ed5a6e3f03527f4d2ee892a3cefa2688d402ea24be930fd4001e46b969

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0acdc1ec128e2692ab890112d2fc9791a534e2c6d8c546a6ecaf8af1b65926ab
MD5 b33624edadc76291acf8920ce27a06a9
BLAKE2b-256 e7696487046aeb04f6d582d9895741bffd1d4363a901f2b8d411e7e13ee49d70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fc34f5e4728cc78c896f26fb3fe2339cdb362865b59508d9bd0163f3bfd0cc5c
MD5 0403b5fd65d5a2f8dd6452463e228d98
BLAKE2b-256 21ae0df2ca4c16d8d0582d497f8d4c05bb3f25cf93740c2320fca60fa8116b31

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94abc15fc3245b55236e9d1f938161678242cb4db8cfac8ebf218c94ae0310f9
MD5 468249bad491c3bcd0af0ede952a885b
BLAKE2b-256 419d6facc49d561b545547580ac7ffd3d255c76c930592d433d36982485415e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 194ad6ce0b595cfd20475c18a7109350a07545c764cd98046f9d3efe2cfd5830
MD5 9564bfc473d9c0698cbbde946617bbe9
BLAKE2b-256 727284868d1ff367767e5051888c976161d0a67b01c7292a4165c440dc23ab95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7843955a5051b7babc097cf2b741ca2a430d14dbf1b772e39eaf4995cfe6000c
MD5 87ba7b1c8adbdaacf3d534d22b102925
BLAKE2b-256 ac4d99abc353847fd25331f4534b06debe9a2804631e603c12d6ba355c8ed303

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b9a60b73b1575a20bac7a783011599a5ba5fec4cfdcc262d2f96ceb28f37a15
MD5 042e7878b5657f43f573d3cd71446dde
BLAKE2b-256 6f003b0f0fac8244af7d6c032c9b7d8ca420866e116f7d8d73feb0d9eec6ae18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9a1b150ea79466128b9bcae64ef78a4d618f7fb10e675e8f1a22606040a26281
MD5 c83edb02c6723725b5b8ccea8e17a6a0
BLAKE2b-256 019d9cb250dbaea12e4dadc3bd59ceffe1f9c802efa16bef599d8cfd52acf3fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 38501e32a1bb6f11aa599d0b474fb117bab390cd317e553ea760555cf0194f85
MD5 fdc05eeb3f7820b95db868c8347e2b46
BLAKE2b-256 2901007baa2fc81d9b0cc9ff19751b4dc647dd13d6a038269c6deb75a6bb5a4c

See more details on using hashes here.

File details

Details for the file scrypt-0.9.2-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.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aab1b855dc4ae272de7b526a49d212d80476ef21bbdc083d49045ebc7feb7a9b
MD5 0ad08844204b19b65c9469f3eef1d8d8
BLAKE2b-256 2807f61b2b32e19a2e96e2b579d4f28cf342ab7641016cdba4538368b0466b47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.2-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6e365e062cdafe1c4bf8d5310dbad33d614ddb6ad3a39590e079721b8553be7e
MD5 2a992b73919451fa9516b682dd8b62b7
BLAKE2b-256 5af7e62ec11ccd3099914b7ca1471c0d2ff7d75c2481671cb054936068d605c4

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