Skip to main content

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 Cubing (h³ mod 2⁶⁴)
  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 Cubing (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.

Metadata

Release files for csh256 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for csh256 1.0.6
File Size Uploaded
csh256-1.0.6.tar.gz 25.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for csh256 1.0.6
File
csh256-1.0.6-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
csh256-1.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
csh256-1.0.6-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
csh256-1.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
csh256-1.0.6-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
csh256-1.0.6-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
csh256-1.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
csh256-1.0.6-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
csh256-1.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
csh256-1.0.6-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
csh256-1.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
csh256-1.0.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
csh256-1.0.6-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details

Total release size: 596.8 kB

Release files / csh256-1.0.6.tar.gz

Download URL csh256-1.0.6.tar.gz
Size 25.1 kB
Tags Source
SHA-256 checksum
How to use checksums
06806fed3b609a1fad54bef933958d2f487d7c9d7061ad954e87b4fba9bbe8f3
BLAKE2b-256 checksum
How to use checksums
0f990178e1431265458326c7b19f92e0775bca45cf78f8438720c6a097705e83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp312-cp312-win_amd64.whl

Download URL csh256-1.0.6-cp312-cp312-win_amd64.whl
Size 29.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8fb08516d0c23b96ece9d338dcb3a114bda6fc44de7451ed0ffeb8926205c24a
BLAKE2b-256 checksum
How to use checksums
a122cd8e41e681131f0e2e71ff8580fef8220616bad1b34e729ce39c56707891
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL csh256-1.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 27.0 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
451d2e9833b7316206344c4f06cee59335cab99d5b4445a09fac96fdfea861e3
BLAKE2b-256 checksum
How to use checksums
b4bc260573d798aee71b9313a617721b8e6e3834b01b067b17b952731b05a1a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL csh256-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 27.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cca22e694c6200723041823a46c6ed6003518f71b239fde67158198f127dcde4
BLAKE2b-256 checksum
How to use checksums
5e966f575ce85c758b9eea9cba55adfd3e50b1089b2066fe173d043127f3f289
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp312-cp312-macosx_11_0_arm64.whl

Download URL csh256-1.0.6-cp312-cp312-macosx_11_0_arm64.whl
Size 26.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
98925e36cc9aefe9320063611ea840a744b213aa5d5c023acb8d9246e7bea67c
BLAKE2b-256 checksum
How to use checksums
ff4f4aef23dfc582eee499e61ecafcd9bbbc16387540eb125456c69b55cdcba9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp311-cp311-win_amd64.whl

Download URL csh256-1.0.6-cp311-cp311-win_amd64.whl
Size 29.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2f60ffda895a30efd07aee5225daa4cc86d1fb4dce886ace248e87c45b86d11a
BLAKE2b-256 checksum
How to use checksums
664c9270b993c349345bd56bd9ede46773aab488ff7088090e3e943e5bf8fd5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL csh256-1.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 27.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9b5627ae0b1d689faa872fbf1929b626eaaf0123427696e26bc46195b45cedf9
BLAKE2b-256 checksum
How to use checksums
e97cee97cfda81ebe3a752b2a0740e884b9ffa9ee86c0d5ca818bbe3383006a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL csh256-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 27.4 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
50192e050f321e59a75ec78e21100628940de0efe4d3bd5023f58d3aa97e8370
BLAKE2b-256 checksum
How to use checksums
723fcd4cd85d203c887b9827a28bba602597d0b7820cd732c28c4aacffadadb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp311-cp311-macosx_11_0_arm64.whl

Download URL csh256-1.0.6-cp311-cp311-macosx_11_0_arm64.whl
Size 26.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cbe029d25ade6170c555bfc53e3919b41c25ab3d7fd5f04e6f3f1ce2a4dbf48b
BLAKE2b-256 checksum
How to use checksums
5442aa71f6003c9d3a6a230d4d5a45ac58bc2330b6485a43467ddcf77e169896
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp310-cp310-win_amd64.whl

Download URL csh256-1.0.6-cp310-cp310-win_amd64.whl
Size 29.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f7e91c93aa7e817052485d7ff7a48f46713da95f3689cc92c11603906a697c09
BLAKE2b-256 checksum
How to use checksums
522be98e2151c43ceab0aa60431135aacab36f16f3f21af84392eeb5175b1be5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL csh256-1.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 27.0 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fa7a2027be3da557c248e2c038d27b75087710871c3277f3e58e30225bcbad22
BLAKE2b-256 checksum
How to use checksums
4b6e3757423c47551be751d69f09755e1c7cc51f8dfaee007ea46285e2b2a13f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL csh256-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 27.4 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d8a4477580aeda4cf91d5ed612c2659e58238d45964360d20021781a0c5e963c
BLAKE2b-256 checksum
How to use checksums
6b17b2798ac717d6b7a6289bd3fae3160da2089724bdac7d45a5d823527e6cc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp310-cp310-macosx_11_0_arm64.whl

Download URL csh256-1.0.6-cp310-cp310-macosx_11_0_arm64.whl
Size 26.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e96430dc6b6b2b6175b6ce680bf197f1e92d004be74de244718631ad29920794
BLAKE2b-256 checksum
How to use checksums
52ee115ad8af72b35e609408bb3ac62919264d18e8127225858c4019399db82d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp39-cp39-win_amd64.whl

Download URL csh256-1.0.6-cp39-cp39-win_amd64.whl
Size 29.9 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
16da109f8f3c5c50ae78e5c53fcfc8f5c41bb81a83296e9694625bfbb2f20d91
BLAKE2b-256 checksum
How to use checksums
6508a15004cba32d0c8f3891e383be1c885060b02b0ff9602436e64513cabb9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL csh256-1.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 27.0 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0545ef681d132a76817af3dd6decc2436c078df1d6e3dbe0eae54e83107e7a88
BLAKE2b-256 checksum
How to use checksums
5d3facdefb853c0eedada4e57307f176e070c074ee52cb06d59574ff4529244d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL csh256-1.0.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 27.4 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0df884cb015480ed28b0c8792e409b378fc4198b1c5ff9af1200c7dd97e0d259
BLAKE2b-256 checksum
How to use checksums
cc461d4af521a51cfad1e83b04d293f02079b815e5e8b5ca1cc8cce23a864bf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp39-cp39-macosx_11_0_arm64.whl

Download URL csh256-1.0.6-cp39-cp39-macosx_11_0_arm64.whl
Size 26.2 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
316432fee3b1a8748ac325b4c8a0fadb68ffeff2c1965e72a5ea24a8f13abe20
BLAKE2b-256 checksum
How to use checksums
764b68d40c4afede6140b16b95b4440fb2ffe7726f0cc4002afae10e75aed694
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp38-cp38-win_amd64.whl

Download URL csh256-1.0.6-cp38-cp38-win_amd64.whl
Size 29.9 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
eb5ce503741f999bd45649c88ab53aa8a0695616b17ab54f7479ceb6e4f2e1a2
BLAKE2b-256 checksum
How to use checksums
9465ccd7bdffa2486a563696bfd656305dfd448d99e21410b5798812dd9f414f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL csh256-1.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 36.6 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
55f8e7512183b081adca2220e68ba48b0818ab718ba3efd49f9be84cadf1934c
BLAKE2b-256 checksum
How to use checksums
dd8fcc012a99944cfbe1f5e1e4e41e2046b924e6894588d4e1f1418f0764282b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL csh256-1.0.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 37.0 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0dacf81ce96c71f64e4bba37f38c5c0791cdd926f8eb80195fb28a60b71acc8f
BLAKE2b-256 checksum
How to use checksums
b3bce57b537c98c363dd9c5a7a17570873df1510b075d656925b95d77154a650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / csh256-1.0.6-cp38-cp38-macosx_11_0_arm64.whl

Download URL csh256-1.0.6-cp38-cp38-macosx_11_0_arm64.whl
Size 26.2 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
17aa15817d67fac99d0c2e0e1d014e32500e7342ca9e030c177c333b3f06ef89
BLAKE2b-256 checksum
How to use checksums
d06669d048fa97b441de175996059f420b636b8ac8ae6438f87d95d9bfdc484a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.6 This release

21 release files

1.0.3

21 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page