CSH-256: A hybrid password hashing algorithm with time-cost resistance
Project description
CSH-256: Custom Secure Hash - 256 bit
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:
- Non-Linearity Layer: AES S-Box substitution for enhanced diffusion
- Computational Slowdown: Modular exponentiation (h³ mod 2⁶⁴) inspired by RSA
- 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 hashsalt(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 stringsalt: Salt bytesiterations: Iteration countformatted: 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 componentsformatted: 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
- SHA-256 Functions: Σ₀, Σ₁, σ₀, σ₁, CH, MAJ
- AES S-Box: 8-bit non-linear substitution
- 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
- Rivest, R. L., et al. (1978). "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems"
- NIST FIPS 180-4: Secure Hash Standard (SHS)
- 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1e15532d0d4580c009825f79b9f5643851cce5a6e75058e243d18a31ffb9239
|
|
| MD5 |
d9e5f52d60e04f9802541e19787033cb
|
|
| BLAKE2b-256 |
38540d7e1250da9974b4a6847ae948cbf9a187baf8d7623e0231e191029061c2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72c2679894642417f16c597efa4576d3c7a5a7655d4d0ce3c4adaf910342aeb2
|
|
| MD5 |
4dda429a004b88ae82dec97b9bc10ab4
|
|
| BLAKE2b-256 |
e30db94b7809b0ddeb35e60034bf4e74ba027fee2d70b5a2fda8eee1064e4871
|
File details
Details for the file csh256-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csh256-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 27.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdbe1c1b26a5b1aa6b0b33c55a99e63999c6562dee917b5e4a60127718112472
|
|
| MD5 |
d23744410429901a062da4be1982e110
|
|
| BLAKE2b-256 |
0559db28f762614a52c2281ffaa93fcd6e83cef3561a3ef904362b4f90a27d6b
|
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
- Download URL: csh256-1.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 27.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
102088deb2a1f65824b40f591a314f4a51f460e8234c7b0264b797707f84f2c6
|
|
| MD5 |
3185d639f73ab2aae76e638186933be1
|
|
| BLAKE2b-256 |
458873670e86e70871aae01c7baf2a4c73c1ca442a5ff7a2d1d9be45aa6eb13c
|
File details
Details for the file csh256-1.0.3-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: csh256-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 26.3 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
938976c3f3dd412d1b127f1f68c1032142a9acdac5a0a3e0e61a44e0da19c6a2
|
|
| MD5 |
42bf9e8934196cacf7cfe46b8185b865
|
|
| BLAKE2b-256 |
2a3b76dab25bd03abbbb6c1e205912a63764eb68d3181efafd7347c7c6a355ac
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae0a7a0c8bfbeb2b7a7839db0a724ddb865eea9bc9710adc3680ced8a1eedf90
|
|
| MD5 |
4377a1984350321c1821463ad19da03b
|
|
| BLAKE2b-256 |
a6f4b6e77ed39ffee277664f98c48c38f113355c8d9eb000e6d7fd36ad7e0f84
|
File details
Details for the file csh256-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csh256-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 27.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd6991e11acc8be0b020a54ea9a06f16ba7bd00bc8e6cfe9d1e5a1d058c5be83
|
|
| MD5 |
2fbbdb1d3da379b74ce8d017aab3d494
|
|
| BLAKE2b-256 |
7caf629676b4b8e075efb6568f478630e2132bab4a0c32211596b4f57ac145f0
|
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
- Download URL: csh256-1.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 27.5 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccd4fdeacf21821496224c9d0a2b56b89702f34378376c971c010be26976aa88
|
|
| MD5 |
1b99b6f64eb2dba1a9dcf60974c13cb3
|
|
| BLAKE2b-256 |
6cb5704c42e92726f40c1d8169ed7efb8f349d6a9b173d7ee2e3d9fc13e276f2
|
File details
Details for the file csh256-1.0.3-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: csh256-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 26.3 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df829dcf5b10cf6004462370701e7a2caa6cbb8e13139ebb952083415da1c1c3
|
|
| MD5 |
f1cd6a93584669414b03247cc15f6ef0
|
|
| BLAKE2b-256 |
daadb66ed20984a9d0e072bcb9f6085ed3d2409584d8ab62b8cb7101c6b7a7f3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
772b43f048c253033d94732d41d89b96e04f8382dab53cc39dfaccacb6d708e2
|
|
| MD5 |
69bc33ca9ae8fb79c42452508ef4a82f
|
|
| BLAKE2b-256 |
7838a10c4d1c5131f8c8492efa85a3da62fd7c61f44123b72209d9122a71cc7e
|
File details
Details for the file csh256-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csh256-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 27.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
625aa7c116d14c1ee848f73360886564a29a93e7d7fd99ac26ade7b9a8f545a4
|
|
| MD5 |
cc133272be6bd0f199a8515b3988c6d3
|
|
| BLAKE2b-256 |
c1b05239a73e90fb71c6a0e06ec5de422d96673d8ea0aca66d8d2354d64d12d4
|
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
- Download URL: csh256-1.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 27.5 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c66a9366e23d5d6808efef85934152f73f047abdaa7bd9f33198e456da627631
|
|
| MD5 |
dc8ba5614eaee724b2541bbc14ccbba1
|
|
| BLAKE2b-256 |
5877b80562f19351be3fb76aa651ce2ad00897572e342f9ddeff95cc5e9c7a07
|
File details
Details for the file csh256-1.0.3-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: csh256-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 26.3 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86f768495ed3ce267c06748b157990cd4cd5f104be992fa22160e948ba721dc6
|
|
| MD5 |
9e6195bb54a8c45c95f4aaf63f76c2bf
|
|
| BLAKE2b-256 |
eeeb04f3b5815e0eb09f3d6d4061346e256abe9ea487b0aeab632740c90db827
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e70a82d0045ec8f674aea85720f50a35830c0d6a567f6cd0487f117e004031ab
|
|
| MD5 |
636d4a2f5952ef6333b43b3a003365b5
|
|
| BLAKE2b-256 |
100fec7374270eca7b6b10b54b1b3a0ac950477fcdb3daaef86e802e3c8e1aca
|
File details
Details for the file csh256-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csh256-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 27.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71f13c68db99bf3f004a74712fed91473bdbfa83ad4ac136e3ae8abbb267210c
|
|
| MD5 |
e07b252c4ac44c510e6da35acef1fbe5
|
|
| BLAKE2b-256 |
732aa3822bb21f5a34a83a10680efb470ba13de3b8266de096640f46a3479cc2
|
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
- Download URL: csh256-1.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 27.4 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6d965ca80d9fa220137dfbe3f8c080213915fb02d90e14ea725f0633ac9eb2d
|
|
| MD5 |
90ae88436e1beba59fbfcdea0e3576b3
|
|
| BLAKE2b-256 |
e8d8e7cff96bd587d7453b955b24f4f23fd08f3273b25298476247d62bcfd3d7
|
File details
Details for the file csh256-1.0.3-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: csh256-1.0.3-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 26.3 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d6a06cc31fb749113ae6c17c9184a9d06bdc12f043fbf7a03bd325ae1435307
|
|
| MD5 |
6d2b22966495b2b2d409a0f13149221f
|
|
| BLAKE2b-256 |
9450fd7c5aaa8a8810f585ee385487fbe9768f702475cccf90dbf560515604c2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6be0c9448236ad784a0b4ca3ec8c0e35cc8db61978ff6bf1fd955b457c37d49
|
|
| MD5 |
859e7a3414ec39032138c2b2c33b9a9b
|
|
| BLAKE2b-256 |
013a34b781780f4e46d8374d404c58ac9eb479166c5579d3ccd22eee084cc3bc
|
File details
Details for the file csh256-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csh256-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 36.7 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eebf5ef6c2f688f30823bc21cfb7283e35a612fa0ee5e7ee0c5f018c50ebd53c
|
|
| MD5 |
0a44457b63a718b4d976731df16c3f03
|
|
| BLAKE2b-256 |
a81514b8645c24323ea23b08c0bf15431970f364b705722f90e814ee61b3ef1a
|
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
- Download URL: csh256-1.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 37.2 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
342617f8c2587efa54fa119e5f9b467fc60b84aeed263eab352a3322dd065023
|
|
| MD5 |
691d6a52a6e95f2786f201f6caee2dca
|
|
| BLAKE2b-256 |
467609bb37fd5cd8488313d357107b34767783d2e0c2845c66bf8567c078734a
|
File details
Details for the file csh256-1.0.3-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: csh256-1.0.3-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 26.3 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80728051b634bdf0c14e130f2e0e1c6ba8b7ddb1f862233a9eb01077bf7f7b53
|
|
| MD5 |
93f2f74afca7183bca0a2436c5474699
|
|
| BLAKE2b-256 |
afcb89bc8ed5fdead85031803bb213dfbae76c1081d822a01aa5eae16baf6c9b
|