Skip to main content

CSH-256: A hybrid password hashing algorithm with time-cost resistance

Project description

CSH-256: Custom Secure Hash - 256 bit

PyPI version License: MIT Python 3.8+

A hybrid password hashing algorithm combining the structural robustness of traditional cryptographic hash functions with the time-cost resistance of key derivation functions.

Features

  • 🔒 Hardware-Resistant: Designed to resist GPU/ASIC attacks through computational slowdown
  • 🎯 Avalanche Effect: 51.56% bit diffusion rate (near-optimal 50%)
  • High-Performance C Core: Optional C extension for maximum speed
  • 🔧 Configurable: Adjustable iteration count for future-proof security
  • 🛡️ Battle-Tested Primitives: Uses SHA-256 structure, AES S-Box, and RSA-inspired operations
  • 📦 Zero Dependencies: Pure Python + optional C extension

Algorithm Overview

CSH-256 implements three security layers:

  1. Non-Linearity Layer: AES S-Box substitution for enhanced diffusion
  2. Computational Slowdown: Modular exponentiation (h³ mod 2⁶⁴) inspired by RSA
  3. Time-Cost Iteration: Password stretching through repeated compression

The algorithm achieves 51.56% avalanche effect, meaning changing a single input bit changes approximately half of the output bits.

Installation

From PyPI (Recommended)

pip install csh256

From Source (with C extension)

git clone https://github.com/hemaabokila/CSH-256-Repo.git
cd CSH-256-Repo
pip install -e .

Pure Python (no C compiler needed)

pip install csh256 --no-binary csh256

Quick Start

Basic Usage

import csh256

# Hash a password (auto-generates salt)
hash_result = csh256.hash("my_secure_password")
print(hash_result)
# Output: 'a3f2b1c4d5e6f7a8b9c0d1e2f3a4b5c6...'

Complete Example with Storage

import csh256

# Create a hash with all parameters
result = csh256.hash_full("my_secure_password")

# Store in database (PHC format)
db.store_user(username="alice", password_hash=result['formatted'])
# Stores: '$csh256$i=4096$3f4e2a1b...$a3f2b1c4...'

# Later, verify password
stored_hash = db.get_password_hash("alice")
is_valid = csh256.verify("my_secure_password", formatted=stored_hash)
print(f"Password valid: {is_valid}")

Custom Parameters

import csh256

# Use custom salt and iterations
custom_salt = csh256.generate_salt()
result = csh256.hash_full(
    "my_password",
    salt=custom_salt,
    iterations=8192  # Higher = more secure but slower
)

print(f"Hash: {result['hash']}")
print(f"Salt: {result['salt'].hex()}")
print(f"Iterations: {result['iterations']}")

API Reference

Core Functions

hash(password, salt=None, iterations=None)

Generate a CSH-256 hash (returns hex string only).

Parameters:

  • password (str | bytes): Password to hash
  • salt (bytes, optional): 16-byte salt (auto-generated if None)
  • iterations (int, optional): Iteration count (default: 4096)

Returns: 64-character hexadecimal hash string


hash_full(password, salt=None, iterations=None)

Generate complete hash with all parameters.

Returns: Dictionary with keys:

  • hash: Hex hash string
  • salt: Salt bytes
  • iterations: Iteration count
  • formatted: PHC-formatted string

verify(password, hash_value=None, salt=None, iterations=None, formatted=None)

Verify a password against stored hash.

Parameters:

  • password (str | bytes): Password to verify
  • Either:
    • hash_value, salt, iterations: Individual components
    • formatted: PHC-formatted string

Returns: True if valid, False otherwise


Utility Functions

generate_salt(size=16)

Generate cryptographically secure random salt.

format_hash(hash_value, salt, iterations)

Format components into PHC string.

parse_hash(formatted)

Parse PHC string into components.

recommend_iterations(target_time_ms=250)

Recommend iteration count based on target computation time.

# Find iterations for ~500ms computation
iterations = csh256.recommend_iterations(500)
print(f"Use {iterations} iterations")

Performance Benchmarks

Tested on Intel i7-10700K @ 3.80GHz:

Iterations Time (Python) Time (C) Speedup
1,024 0.85s 0.12s 7.1x
4,096 3.42s 0.48s 7.1x
8,192 6.84s 0.96s 7.1x
16,384 13.68s 1.92s 7.1x

Security Considerations

Recommended Iterations

  • Minimum: 4,096 iterations
  • Standard: 8,192 iterations (~500ms)
  • High-Security: 16,384+ iterations (~1s+)

Salt Requirements

  • Must be exactly 16 bytes
  • Must be cryptographically random
  • Must be unique per password
  • Use csh256.generate_salt() for secure generation

Storage Format

Always store using PHC format:

$csh256$i=4096$<salt_hex>$<hash_hex>

This format includes all parameters needed for verification.

Algorithm Specification

Architecture

  • Structure: Merkle–Damgård construction
  • Block Size: 512 bits
  • Output Size: 256 bits
  • Rounds: 64 per compression

Security Primitives

  1. SHA-256 Functions: Σ₀, Σ₁, σ₀, σ₁, CH, MAJ
  2. AES S-Box: 8-bit non-linear substitution
  3. RSA Primitive: Modular exponentiation (h³ mod 2⁶⁴)

Avalanche Effect

  • Measured: 51.56% bit diffusion
  • Ideal: 50.00%
  • Interpretation: Near-perfect statistical independence

Testing

# Run all tests
pytest tests/

# Run with coverage
pytest --cov=csh256 tests/

# Run benchmarks
pytest tests/test_performance.py -v

Development

# Install development dependencies
pip install -e ".[dev]"

# Format code
black csh256/ tests/

# Type checking
mypy csh256/

# Linting
flake8 csh256/

Comparison with Other Algorithms

Algorithm Type Memory-Hard GPU-Resistant Configurable Cost
CSH-256 Hybrid No Yes Yes (iterations)
Bcrypt KDF No Partial Yes (cost factor)
Scrypt KDF Yes Yes Yes (N, r, p)
Argon2 KDF Yes Yes Yes (t, m, p)
PBKDF2 KDF No No Yes (iterations)

CSH-256 focuses on computational cost through non-parallelizable operations rather than memory hardness.

License

MIT License - see LICENSE file for details.

Citation

If you use CSH-256 in academic work, please cite:

@software{csh256,
  author = {Aboukila, Ibrahim Hilal},
  title = {CSH-256: A Hybrid Password Hashing Algorithm},
  year = {2025},
  url = {https://github.com/hemaabokila/CSH-256-Repo}
}

Contributing

Contributions welcome! Please read CONTRIBUTING.md first.

References

  1. Rivest, R. L., et al. (1978). "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems"
  2. NIST FIPS 180-4: Secure Hash Standard (SHS)
  3. Daemen, J., & Rijmen, V. (2002). "The Design of Rijndael: AES"

Author

Ibrahim Hilal Aboukila

Acknowledgments

Special thanks to the cryptography community for their foundational work in hash functions and key derivation.


⚠️ Security Notice: While CSH-256 implements multiple security layers, always use the latest recommended iteration counts and follow secure password practices. For production use, conduct thorough security audits.

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

csh256-1.0.3.tar.gz (25.2 kB view details)

Uploaded Source

Built Distributions

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

csh256-1.0.3-cp312-cp312-win_amd64.whl (29.9 kB view details)

Uploaded CPython 3.12Windows x86-64

csh256-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

csh256-1.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (27.5 kB view details)

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

csh256-1.0.3-cp312-cp312-macosx_11_0_arm64.whl (26.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

csh256-1.0.3-cp311-cp311-win_amd64.whl (29.9 kB view details)

Uploaded CPython 3.11Windows x86-64

csh256-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

csh256-1.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (27.5 kB view details)

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

csh256-1.0.3-cp311-cp311-macosx_11_0_arm64.whl (26.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

csh256-1.0.3-cp310-cp310-win_amd64.whl (29.9 kB view details)

Uploaded CPython 3.10Windows x86-64

csh256-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

csh256-1.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (27.5 kB view details)

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

csh256-1.0.3-cp310-cp310-macosx_11_0_arm64.whl (26.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

csh256-1.0.3-cp39-cp39-win_amd64.whl (29.9 kB view details)

Uploaded CPython 3.9Windows x86-64

csh256-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

csh256-1.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (27.4 kB view details)

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

csh256-1.0.3-cp39-cp39-macosx_11_0_arm64.whl (26.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

csh256-1.0.3-cp38-cp38-win_amd64.whl (29.8 kB view details)

Uploaded CPython 3.8Windows x86-64

csh256-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

csh256-1.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (37.2 kB view details)

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

csh256-1.0.3-cp38-cp38-macosx_11_0_arm64.whl (26.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file csh256-1.0.3.tar.gz.

File metadata

  • Download URL: csh256-1.0.3.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3.tar.gz
Algorithm Hash digest
SHA256 b1e15532d0d4580c009825f79b9f5643851cce5a6e75058e243d18a31ffb9239
MD5 d9e5f52d60e04f9802541e19787033cb
BLAKE2b-256 38540d7e1250da9974b4a6847ae948cbf9a187baf8d7623e0231e191029061c2

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: csh256-1.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 72c2679894642417f16c597efa4576d3c7a5a7655d4d0ce3c4adaf910342aeb2
MD5 4dda429a004b88ae82dec97b9bc10ab4
BLAKE2b-256 e30db94b7809b0ddeb35e60034bf4e74ba027fee2d70b5a2fda8eee1064e4871

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cdbe1c1b26a5b1aa6b0b33c55a99e63999c6562dee917b5e4a60127718112472
MD5 d23744410429901a062da4be1982e110
BLAKE2b-256 0559db28f762614a52c2281ffaa93fcd6e83cef3561a3ef904362b4f90a27d6b

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 102088deb2a1f65824b40f591a314f4a51f460e8234c7b0264b797707f84f2c6
MD5 3185d639f73ab2aae76e638186933be1
BLAKE2b-256 458873670e86e70871aae01c7baf2a4c73c1ca442a5ff7a2d1d9be45aa6eb13c

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 938976c3f3dd412d1b127f1f68c1032142a9acdac5a0a3e0e61a44e0da19c6a2
MD5 42bf9e8934196cacf7cfe46b8185b865
BLAKE2b-256 2a3b76dab25bd03abbbb6c1e205912a63764eb68d3181efafd7347c7c6a355ac

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: csh256-1.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ae0a7a0c8bfbeb2b7a7839db0a724ddb865eea9bc9710adc3680ced8a1eedf90
MD5 4377a1984350321c1821463ad19da03b
BLAKE2b-256 a6f4b6e77ed39ffee277664f98c48c38f113355c8d9eb000e6d7fd36ad7e0f84

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd6991e11acc8be0b020a54ea9a06f16ba7bd00bc8e6cfe9d1e5a1d058c5be83
MD5 2fbbdb1d3da379b74ce8d017aab3d494
BLAKE2b-256 7caf629676b4b8e075efb6568f478630e2132bab4a0c32211596b4f57ac145f0

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccd4fdeacf21821496224c9d0a2b56b89702f34378376c971c010be26976aa88
MD5 1b99b6f64eb2dba1a9dcf60974c13cb3
BLAKE2b-256 6cb5704c42e92726f40c1d8169ed7efb8f349d6a9b173d7ee2e3d9fc13e276f2

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df829dcf5b10cf6004462370701e7a2caa6cbb8e13139ebb952083415da1c1c3
MD5 f1cd6a93584669414b03247cc15f6ef0
BLAKE2b-256 daadb66ed20984a9d0e072bcb9f6085ed3d2409584d8ab62b8cb7101c6b7a7f3

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: csh256-1.0.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 772b43f048c253033d94732d41d89b96e04f8382dab53cc39dfaccacb6d708e2
MD5 69bc33ca9ae8fb79c42452508ef4a82f
BLAKE2b-256 7838a10c4d1c5131f8c8492efa85a3da62fd7c61f44123b72209d9122a71cc7e

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 625aa7c116d14c1ee848f73360886564a29a93e7d7fd99ac26ade7b9a8f545a4
MD5 cc133272be6bd0f199a8515b3988c6d3
BLAKE2b-256 c1b05239a73e90fb71c6a0e06ec5de422d96673d8ea0aca66d8d2354d64d12d4

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c66a9366e23d5d6808efef85934152f73f047abdaa7bd9f33198e456da627631
MD5 dc8ba5614eaee724b2541bbc14ccbba1
BLAKE2b-256 5877b80562f19351be3fb76aa651ce2ad00897572e342f9ddeff95cc5e9c7a07

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86f768495ed3ce267c06748b157990cd4cd5f104be992fa22160e948ba721dc6
MD5 9e6195bb54a8c45c95f4aaf63f76c2bf
BLAKE2b-256 eeeb04f3b5815e0eb09f3d6d4061346e256abe9ea487b0aeab632740c90db827

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: csh256-1.0.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e70a82d0045ec8f674aea85720f50a35830c0d6a567f6cd0487f117e004031ab
MD5 636d4a2f5952ef6333b43b3a003365b5
BLAKE2b-256 100fec7374270eca7b6b10b54b1b3a0ac950477fcdb3daaef86e802e3c8e1aca

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71f13c68db99bf3f004a74712fed91473bdbfa83ad4ac136e3ae8abbb267210c
MD5 e07b252c4ac44c510e6da35acef1fbe5
BLAKE2b-256 732aa3822bb21f5a34a83a10680efb470ba13de3b8266de096640f46a3479cc2

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b6d965ca80d9fa220137dfbe3f8c080213915fb02d90e14ea725f0633ac9eb2d
MD5 90ae88436e1beba59fbfcdea0e3576b3
BLAKE2b-256 e8d8e7cff96bd587d7453b955b24f4f23fd08f3273b25298476247d62bcfd3d7

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d6a06cc31fb749113ae6c17c9184a9d06bdc12f043fbf7a03bd325ae1435307
MD5 6d2b22966495b2b2d409a0f13149221f
BLAKE2b-256 9450fd7c5aaa8a8810f585ee385487fbe9768f702475cccf90dbf560515604c2

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: csh256-1.0.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csh256-1.0.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f6be0c9448236ad784a0b4ca3ec8c0e35cc8db61978ff6bf1fd955b457c37d49
MD5 859e7a3414ec39032138c2b2c33b9a9b
BLAKE2b-256 013a34b781780f4e46d8374d404c58ac9eb479166c5579d3ccd22eee084cc3bc

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eebf5ef6c2f688f30823bc21cfb7283e35a612fa0ee5e7ee0c5f018c50ebd53c
MD5 0a44457b63a718b4d976731df16c3f03
BLAKE2b-256 a81514b8645c24323ea23b08c0bf15431970f364b705722f90e814ee61b3ef1a

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 342617f8c2587efa54fa119e5f9b467fc60b84aeed263eab352a3322dd065023
MD5 691d6a52a6e95f2786f201f6caee2dca
BLAKE2b-256 467609bb37fd5cd8488313d357107b34767783d2e0c2845c66bf8567c078734a

See more details on using hashes here.

File details

Details for the file csh256-1.0.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csh256-1.0.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80728051b634bdf0c14e130f2e0e1c6ba8b7ddb1f862233a9eb01077bf7f7b53
MD5 93f2f74afca7183bca0a2436c5474699
BLAKE2b-256 afcb89bc8ed5fdead85031803bb213dfbae76c1081d822a01aa5eae16baf6c9b

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