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

Uploaded CPython 3.14tmacOS 14.0+ ARM64

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

Uploaded CPython 3.14macOS 14.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ ARM64

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

Uploaded CPython 3.10macOS 14.0+ ARM64

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

Uploaded CPython 3.9macOS 14.0+ ARM64

scrypt-0.9.3-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.3-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.3-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.3.tar.gz.

File metadata

  • Download URL: scrypt-0.9.3.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.3.tar.gz
Algorithm Hash digest
SHA256 441edf0774e65faa2c49dc0d2b8d8499ea11d7f85a1f1685b93e33df2743c757
MD5 93a856522c1fed3d1026ceadd09c10f3
BLAKE2b-256 2a8ab8c79a5cc0d23ef9c9dbca162f37be6a66c67dffda2ab9ad88d767727ec2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 77dd45c0cded95cad4e25d69068cbb81f529530b2b9e7a849453bd36bd4c1deb
MD5 4b23c2950321f04607b2b3b00a7b8d0d
BLAKE2b-256 b07ab554d3ab330325ae06f25c2c42f8bb02ea8262deee196f03eabe0660bb99

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d6a9a0089d7fc438006afbb51b92a842318cf658ebdfbe00af915be9c3554a16
MD5 3490852b849278077a5d0d5baec1b4dc
BLAKE2b-256 913027149e1ab186648e29e5d9a53169cbce0ba271e0e19bfa601772cf500cba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp314-cp314t-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c6a5312ed858439332e6d900d87e75f995d8c4b5f2485b4025fa7ac5ba92939b
MD5 b0bc79edadb4b5e1755dbdd90dc4b641
BLAKE2b-256 e645cb666d3aa6a3fd7d0ec5fe9ec39ea9f8aa3390d8ebd97c617818a396936f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd899bce2c5f75294671ab707131bcbb160c09976459dff6f3032fb3a3fc969b
MD5 b813da8dc62c07fb191078f657d4abab
BLAKE2b-256 36c1615bcead64e9df2183066e6ecbb2e63d3ef2eda4df88a5e800df2e1c1ab7

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 be7e36e439532017f8b1ac3b35c92de571989c5c29f09d78dd82fb180edce1aa
MD5 5197f68a07755cad5a62bd99f3d0704b
BLAKE2b-256 aef4446f9d814bfcad927dc3d68f82d909061d1a7c8731b4a61cec4aaca8a6b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1441c00de97ed40cd3e277af28ae28b9961245b247641da4e52add8331011c26
MD5 34a7ee9d3e9a328cd235739fd42f5387
BLAKE2b-256 171b467d65f5c560b6b4e408cb3b7a478245de1f6688287a4e26bbf21675dbc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 52d7c972a50d8f39e18e6ee6d8c0988ce545a6ce04213def9625082138eeb06a
MD5 6450708fe1cd5724a54d561e8a02cd1c
BLAKE2b-256 fe0c1d5fc03e44a73323b886cd19fc79c3fe195ac94c646bc87847159321f4ad

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de10d61fefcbbd2168adc9521daefb8d4e9d1b4d8f6cef27abf89bbf8c6fcf9b
MD5 c8a4b5e166b1f9c3574bcbd56224345e
BLAKE2b-256 868ac0577a2d568b1647b6d46a4279f5789c297cb05d253cac9e806ebae20e89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8f326e425cb59eb95130caf75cde13a44d3fd9f8f8b5786f29f84965626cdd66
MD5 107ff77657eb759fa97f398197814828
BLAKE2b-256 629f546957f60221127fd1f4879b8334bac8c813585bb9135f6e36b2d64ee981

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 79c47f3a29cf9e018d6f40850cdd7d52f2d177cdce8620d324aca66f33aff015
MD5 a069a55013cd15f45714a597186ccf23
BLAKE2b-256 635d96838cef6e6aafc22fc51c69d4b7260f68278f939efdf4027b4d1c392ab3

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab2fbe8f80bfc432fa420cb2c130131171f02054557f0d846792483fe07a5d08
MD5 e10dd3171023c0df4269d29c4a2ac2a2
BLAKE2b-256 903df51f72a1ffdca61ce0972ec0934d1a4ac3547ba3be5fc6d1b4a45be855ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c00eec640942a660e8040e3b2b52a1539f985585e5fae51ed3c1440ab4c9cffa
MD5 231aeca73e2a8bbda1ab34599a448b8a
BLAKE2b-256 4f6d075370655e490f2ce083a37f8a1d483a23cefb7d7ab5d38ca2de81828fda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 195e9835ce26903a71cda92c308802d16e7f22d5545a2fe7fdd1145f62f7243f
MD5 884684f0358c8317241daa7a9723da47
BLAKE2b-256 6fe59e76e7e85f87d0e70dd9c8e9be59573af9f6ca6a13b6b6e6fb14d9042e48

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 27a830a1782b4da55f35e7b40e2479f43d656119724c6e19484acd3c7a749a1a
MD5 71843d834f557f289f6229bbc46574e7
BLAKE2b-256 6e25318d85055b429f391137b790369bd866b9a50d25eef1ca108c5f928c9731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 025f943ef1334ccf678043b8eda07a140f98015f754e98b3fa89470fca3db317
MD5 3f8f4cb04750766b6ad553780799d889
BLAKE2b-256 8fbbbf87f5232fbeaa2d3ae64289201d2b67bc9c932d78f771b74b30e7daeb52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c11975e509a538168780376e0560ec2c1d5db87373a35390f1c3e03dd6ef1b46
MD5 bdb68735fb92c329672f583f977e7220
BLAKE2b-256 9e018d0fbe7977b6fbf93f35e26699dd27043067ca8f0c1f66f19a03584349d3

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b800774d89abd573a18e56e8cdbe82ff6a0232a9444e3b23f3a6b45a72101ec9
MD5 fafee608c604bf8102c76f33432205d6
BLAKE2b-256 5103def2b9e8d201471f2ffd9a3882e69b77cfd80408c1ecb5b0c133c93a7889

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1cba74824996181b60cab707d20c16b08598b9f08bc1ecdee637959206edbdb3
MD5 aeda7bafe0b73deed4aa051115a7e353
BLAKE2b-256 3cc08b32778298620f8cc921e821257f7d389de02e7ec4b9818a0948848e09ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c9c9bbe758ec30f603abd175be5b6c65c1879b5308c8ffbaf82d85b25dc6afd7
MD5 7abfaa21f67d6dd0d28e836ac7728813
BLAKE2b-256 3f90722d0322385fb9ed191799651758c6024f6cd37a5ab48e647b3f9379bddf

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13a365f8e860cf975a955a52493e1b3a7aff618440213dc057bb9a916231c379
MD5 928011f41f3eb4d9db9044a7ddc82710
BLAKE2b-256 74616e02d5f94db59aa3d25640e0d5e3cf78675a93b6cdd622f4e100420b8cef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 614ba34286eed9cb97d2d7a2ea821845d05017759358b96ba68947ba5c4323d2
MD5 0decf68e081c485267b4d8574553b6da
BLAKE2b-256 4b1507a4cd95019aa5ef67b7985753dd5c1dc25011e6ab45d445313923af9707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 42ac4fea196491982498f13d98ec492896d3ae4cc1bf7856b21752ef18b8f5ba
MD5 c1200044db3a130d8356e0f64fe80f46
BLAKE2b-256 cb3c10b239e57b61cac1db4f3df37edf2d5f0e359b0be59794a8a0892aa1473b

See more details on using hashes here.

File details

Details for the file scrypt-0.9.3-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.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 550ae50712b311d918bcc679065c2b6fa8143ccb72414674943618afae109fb7
MD5 e730b9e1958601db81c6f87df483d527
BLAKE2b-256 7f845a7d41a0f897dba826cecf811c1a5af08ce9f72fb0cf5effdd721cb38476

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrypt-0.9.3-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3fb1d0d3004bb83bfac3703068648bb5e36ea0f13e23582824dcc3021e993346
MD5 54f89e05b55d8544c7baa16f57ca169d
BLAKE2b-256 58cbbb7d717b210741b9b89bcfe7f5c158e320aca646f3ade4401cb8824005bd

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