Skip to main content

XTEA encryption with multiple modes (ECB, CBC, CFB, OFB, CTR) - High-performance Cython implementation

Project description

xtea_cython

PyPI Python License: MIT Build

High-performance XTEA encryption implementation using Cython with support for multiple encryption modes.

🚀 Features

  • XTEA Algorithm: Corrected Block TEA cipher with 128-bit key
  • Multiple Modes: ECB, CBC, CFB, OFB, CTR
  • High Performance: Up to 73x faster than pure Python implementations
  • Security Hardened: Constant-time padding validation, minimum rounds enforcement
  • Full Compatibility: Drop-in replacement for PyPI xtea library
  • No Dependencies: Pure Cython implementation, no external C libraries required

📦 Installation

pip install xtea_cython

Requirements:

  • Python 3.8+
  • Cython 0.29+ (for development/building)
  • No runtime dependencies

🏁 Quick Start

Basic Encryption (CBC Mode - Recommended)

import os
from xtea_cython import encrypt_cbc, decrypt_cbc

# Generate secure random key and IV
key = os.urandom(16)  # 128-bit key
iv = os.urandom(8)    # 64-bit IV

# Encrypt
plaintext = b"Hello, World!"
ciphertext = encrypt_cbc(plaintext, key, iv)

# Decrypt
decrypted = decrypt_cbc(ciphertext, key, iv)

assert decrypted == plaintext

Stream Mode (CTR) - No Padding Required

from xtea_cython import encrypt_ctr, decrypt_ctr

# Use nonce instead of IV
nonce = os.urandom(8)  # Must be unique per encryption

# Encrypt/decrypt directly
ciphertext = encrypt_ctr(plaintext, key, nonce)
decrypted = decrypt_ctr(ciphertext, key, nonce)

Using Helper Functions

from xtea_cython import generate_key, generate_iv, encrypt_cbc, decrypt_cbc

# Generate keys and IVs automatically
key = generate_key()      # 16-byte random key
iv = generate_iv()        # 8-byte random IV

# The rest is the same
ciphertext = encrypt_cbc(plaintext, key, iv)

🛡️ Encryption Modes

CBC Mode (Recommended)

from xtea_cython import encrypt_cbc, decrypt_cbc

ciphertext = encrypt_cbc(plaintext, key, iv)
decrypted = decrypt_cbc(ciphertext, key, iv)
  • Uses PKCS#7 padding (automatic)
  • Most secure for general-purpose encryption
  • IV must be unpredictable (use os.urandom(8))
  • Different IVs produce different ciphertexts
  • Industry standard for symmetric encryption

CTR Mode (Stream Cipher)

from xtea_cython import encrypt_ctr, decrypt_ctr

ciphertext = encrypt_ctr(plaintext, key, nonce)
decrypted = decrypt_ctr(ciphertext, key, nonce)
  • No padding required (preserves input length)
  • Parallel encryption possible
  • Nonce must be unique per encryption with same key
  • Good for streaming data
  • Random access to encrypted data

CFB Mode (Stream Cipher)

from xtea_cython import encrypt_cfb, decrypt_cfb

ciphertext = encrypt_cfb(plaintext, key, iv)
decrypted = decrypt_cfb(ciphertext, key, iv)
  • No padding required
  • Self-synchronizing (resyncs after errors)
  • IV must be unique per encryption
  • Suitable for streaming applications

OFB Mode (Stream Cipher)

from xtea_cython import encrypt_ofb, decrypt_ofb

ciphertext = encrypt_ofb(plaintext, key, iv)
decrypted = decrypt_ofb(ciphertext, key, iv)
  • No padding required
  • Keystream independent of plaintext
  • IV must be unique per encryption
  • Error propagation limited

ECB Mode (Not Recommended - For Legacy Only)

from xtea_cython import encrypt_ecb, decrypt_ecb

ciphertext = encrypt_ecb(plaintext, key)
decrypted = decrypt_ecb(ciphertext, key)
  • ⚠️ WARNING: ECB is not secure for most use cases
  • ⚠️ Same plaintext blocks produce same ciphertext blocks
  • ⚠️ Pattern leakage - reveals data patterns
  • ⚠️ Only use for single-block data or legacy compatibility

🔧 Advanced Usage

Custom Number of Rounds

# Use fewer rounds for faster (but less secure) encryption
weak_encrypted = encrypt_cbc(plaintext, key, iv, rounds=8)

# Use more rounds for higher security (default is 32)
strong_encrypted = encrypt_cbc(plaintext, key, iv, rounds=64)

Manual Padding Control

from xtea_cython import pkcs7_pad, pkcs7_unpad

# Manual padding if needed
padded_data = pkcs7_pad(plaintext)
unpadded_data = pkcs7_unpad(padded_data)

Raw Block Encryption

from xtea_cython import encrypt_block, decrypt_block

# Encrypt single 8-byte block
block = b"12345678"
key = b"0123456789abcdef"  # 16 bytes

encrypted = encrypt_block(block, key)
decrypted = decrypt_block(encrypted, key)

🎯 Security Best Practices

Key Management

import os
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

# ✅ Good: Use cryptographically secure random keys
key = os.urandom(16)  # 128-bit key

# ✅ Better: Use a key derivation function for passwords
password = b"my_secure_password"
salt = os.urandom(16)
kdf = PBKDF2HMAC(
    algorithm=hashes.SHA256(),
    length=16,
    salt=salt,
    iterations=100000,
)
derived_key = kdf.derive(password)

# ❌ Never hardcode keys in your code
# key = b"this_is_a_weak_key"

IV/Nonce Requirements

import os
from uuid import uuid4

# ✅ CBC: IV must be unpredictable
iv = os.urandom(8)

# ✅ CTR: Nonce must be unique per encryption
nonce = uuid4().bytes[:8]  # UUID-based nonce

# ✅ For long-running applications, use counters
counter = 0
def get_next_nonce():
    global counter
    nonce = counter.to_bytes(8, 'big')
    counter += 1
    return nonce

# ❌ Never reuse IVs or nonces with the same key

Mode Selection Guide

Mode Security Performance Use Case
CBC ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ General encryption, file storage
CTR ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Streaming, parallel processing
CFB ⭐⭐⭐⭐ ⭐⭐⭐ Network streams, error recovery
OFB ⭐⭐⭐⭐ ⭐⭐⭐ High-speed streaming
ECB ⭐⭐⭐⭐⭐ Legacy systems, single blocks

Data Handling

# ✅ Always handle keys securely
import tempfile
import os

def secure_delete_path(path):
    """Securely delete a file by overwriting with random data."""
    with open(path, 'r+b') as f:
        length = os.path.getsize(path)
        f.write(os.urandom(length))
    os.unlink(path)

# ✅ Use secure temporary files
with tempfile.NamedTemporaryFile(delete=False) as temp:
    # Write encrypted data
    temp.write(ciphertext)
    temp_path = temp.name

try:
    # Process the encrypted data
    pass
finally:
    secure_delete_path(temp_path)

📊 Performance

Benchmarks vs PyPI xtea Library

Operation xtea_cython PyPI xtea Speedup
Raw block 73.2M ops/s 1.0M ops/s 73x
ECB 64B 2.1M ops/s 57K ops/s 37x
CBC 64B 1.8M ops/s 127K ops/s 14x
CTR 1KB 1.2M ops/s 110K ops/s 11x
CFB 1KB 1.3M ops/s 95K ops/s 14x
OFB 1KB 1.3M ops/s 92K ops/s 14x

Run your own benchmarks:

pip install xtea
python benchmarks.py

Performance Tips

# ✅ Use CTR mode for large files
with open('large_file.txt', 'rb') as f:
    plaintext = f.read()
    ciphertext = encrypt_ctr(plaintext, key, nonce)

# ✅ Process data in chunks for memory efficiency
chunk_size = 8192  # 8KB chunks
with open('input.txt', 'rb') as fin, open('encrypted.bin', 'wb') as fout:
    while True:
        chunk = fin.read(chunk_size)
        if not chunk:
            break
        encrypted_chunk = encrypt_ctr(chunk, key, nonce)
        fout.write(encrypted_chunk)

🔗 API Reference

Core Functions

# Raw block encryption
encrypt_block(data: bytes, key: bytes, rounds: int = 0) -> bytes
decrypt_block(data: bytes, key: bytes, rounds: int = 0) -> bytes

# Data length: exactly 8 bytes
# Key length: exactly 16 bytes
# Rounds: 0 = default 32, minimum 8

Mode Functions

# CBC Mode (Recommended)
encrypt_cbc(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes
decrypt_cbc(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes

# CTR Mode (Stream)
encrypt_ctr(data: bytes, key: bytes, nonce: bytes, rounds: int = 0) -> bytes
decrypt_ctr(data: bytes, key: bytes, nonce: bytes, rounds: int = 0) -> bytes

# CFB Mode (Stream)
encrypt_cfb(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes
decrypt_cfb(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes

# OFB Mode (Stream)
encrypt_ofb(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes
decrypt_ofb(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes

# ECB Mode (Legacy)
encrypt_ecb(data: bytes, key: bytes, rounds: int = 0) -> bytes
decrypt_ecb(data: bytes, key: bytes, rounds: int = 0) -> bytes

Helper Functions

# Key/IV Generation
generate_key(size: int = 16) -> bytes
generate_iv(size: int = 8) -> bytes

# Padding
pkcs7_pad(data: bytes, block_size: int = 8) -> bytes
pkcs7_unpad(data: bytes, block_size: int = 8) -> bytes

# Constants
BLOCK_SIZE = 8  # XTEA block size in bytes

# Backward Compatibility (uses CBC by default)
encrypt(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes
decrypt(data: bytes, key: bytes, iv: bytes, rounds: int = 0) -> bytes

# Security
SecurityWarning = "ECB mode is not secure for most use cases"

Parameter Requirements

Parameter Type Size Required Description
data bytes Variable Yes Plaintext or ciphertext
key bytes Exactly 16 bytes Yes 128-bit encryption key
iv/nonce bytes Exactly 8 bytes Yes Initialization vector/nonce
rounds int ≥ 8 No Number of XTEA cycles (default: 32)

🔄 Backward Compatibility

Migrating from PyPI xtea Library

# Old xtea library usage
import xtea
cipher = xtea.new(key, mode=xtea.MODE_CBC, IV=iv)
ciphertext = cipher.encrypt(pkcs7_pad(plaintext))

# New xtea_cython usage (simpler!)
from xtea_cython import encrypt_cbc
ciphertext = encrypt_cbc(plaintext, key, iv)  # Padding is automatic

Drop-in Replacement

The library is designed to be a drop-in replacement for the PyPI xtea library:

# Both implementations produce identical results
# when using the same key, IV, and data
import xtea  # Old library
from xtea_cython import encrypt_cbc  # New library

# Same input → Same output (bit-for-bit compatible)

🚨 Common Pitfalls

1. Reusing IVs

# ❌ Bad: Reusing IV with the same key
iv = os.urandom(8)
encrypt_cbc(secret1, key, iv)  # IV reused!
encrypt_cbc(secret2, key, iv)  # Security risk!

# ✅ Good: Always use unique IVs
iv1 = os.urandom(8)
iv2 = os.urandom(8)
encrypt_cbc(secret1, key, iv1)
encrypt_cbc(secret2, key, iv2)

2. Reusing Nonces in CTR

# ❌ Very Bad: Reusing nonce in CTR
nonce = os.urandom(8)
encrypt_ctr(secret1, key, nonce)  # Nonce reused!
encrypt_ctr(secret2, key, nonce)  # This completely breaks security!

# ✅ Good: Unique nonces are critical
nonce1 = os.urandom(8)
nonce2 = os.urandom(8)
encrypt_ctr(secret1, key, nonce1)
encrypt_ctr(secret2, key, nonce2)

3. Short Keys

# ❌ Bad: Insufficient key length
key = b"short"  # Only 5 bytes!

# ✅ Good: Always use 16-byte (128-bit) keys
key = os.urandom(16)

4. ECB for Non-Atomic Data

# ❌ Bad: ECB reveals patterns
image_data = open("logo.png", "rb").read()
encrypted = encrypt_ecb(image_data, key)  # Patterns visible!

# ✅ Good: Use CBC or CTR
encrypted = encrypt_cbc(image_data, key, iv)

🛠️ Development

Building from Source

# Clone repository
git clone https://github.com/somjik-api/xtea_cython.git
cd xtea_cython

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# .venv\Scripts\activate  # Windows

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

# Build the Cython extension
python setup.py build_ext --inplace

# Run tests
pytest tests/ -v

# Run benchmarks
python benchmarks.py

Running Tests

# Run all tests
pytest tests/ -v

# Run specific test file
pytest tests/test_modes.py -v

# Run with coverage
pytest tests/ --cov=xtea_cython --cov-report=html

📈 Version History

0.1.0 (2024-01-01)

  • Initial release
  • XTEA core implementation in Cython
  • ECB, CBC, CFB, OFB, CTR modes
  • Security hardening (constant-time padding, minimum rounds)
  • Full compatibility with PyPI xtea library
  • Comprehensive benchmark suite

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass (pytest tests/)
  6. Run benchmarks to ensure no performance regression
  7. Submit a pull request

⚠️ Security Notice

This library implements the XTEA algorithm, which is considered secure for most applications when used correctly. However:

  • Always use secure keys: Never hardcode keys or use predictable values
  • Never reuse IVs/nonces: Each encryption should use a unique IV/nonce
  • Choose appropriate modes: CBC and CTR are recommended for most use cases
  • Avoid ECB: ECB mode should only be used for legacy compatibility
  • Consider your threat model: XTEA may not be suitable for high-security applications

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 References


Made with ❤️ for high-performance cryptography

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

xtea_cython-0.1.0.tar.gz (155.5 kB view details)

Uploaded Source

Built Distributions

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

xtea_cython-0.1.0-cp313-cp313-win_amd64.whl (56.9 kB view details)

Uploaded CPython 3.13Windows x86-64

xtea_cython-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (284.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

xtea_cython-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl (58.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

xtea_cython-0.1.0-cp312-cp312-win_amd64.whl (57.7 kB view details)

Uploaded CPython 3.12Windows x86-64

xtea_cython-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (60.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

xtea_cython-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl (58.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

xtea_cython-0.1.0-cp311-cp311-win_amd64.whl (57.0 kB view details)

Uploaded CPython 3.11Windows x86-64

xtea_cython-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (59.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

xtea_cython-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (57.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

xtea_cython-0.1.0-cp310-cp310-win_amd64.whl (57.0 kB view details)

Uploaded CPython 3.10Windows x86-64

xtea_cython-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (262.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

xtea_cython-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (57.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

xtea_cython-0.1.0-cp39-cp39-win_amd64.whl (57.2 kB view details)

Uploaded CPython 3.9Windows x86-64

xtea_cython-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (59.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

xtea_cython-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (58.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

xtea_cython-0.1.0-cp38-cp38-win_amd64.whl (58.1 kB view details)

Uploaded CPython 3.8Windows x86-64

xtea_cython-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

xtea_cython-0.1.0-cp38-cp38-macosx_11_0_arm64.whl (60.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

xtea_cython-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl (59.0 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file xtea_cython-0.1.0.tar.gz.

File metadata

  • Download URL: xtea_cython-0.1.0.tar.gz
  • Upload date:
  • Size: 155.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xtea_cython-0.1.0.tar.gz
Algorithm Hash digest
SHA256 43009ea2a668887f39ce153fad20080532e638164d242a9aa2aee81a41ed1c05
MD5 f0b037acb5757901785f0a02ec3cefde
BLAKE2b-256 15631460206b0dd2deb270502ca879b98be8e94493bd4b7b70271128c4136381

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0.tar.gz:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f8797cdba751cef8596ac50bd1eea67d4b1639d9217b318b7f96d99600644569
MD5 007dee4124f91028a3e7c0725b329331
BLAKE2b-256 cc1c5b36ebe952db857f1c00be9a77ee1f07db87ae8be70e51fbbe7e28965f81

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp313-cp313-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e36288ce40b0d33597dac1faf5675fd41aebd36bb82ffa78d2815aafbec0d84d
MD5 63fff662123675750cc6e99342aff9ba
BLAKE2b-256 9de90561149ef3cc2e2e4e0f3881f0514c604f04878c88c46b5874ca950320b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc8b81e64452438f15c1fdbffed416625f8e75de94d99b2dd968219705136688
MD5 331cc1fc91d18e08dd0506f12e03058b
BLAKE2b-256 a52cfb589ff47105fa824103cc71bf4c03492e29b53aa2aae6d4742e6837fb9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b05a671ab70a0bdb4b4f7e0f9d0d9b71c96f157106aa1ad4650770d8286b52c3
MD5 3a9cc410d251d193c4974066052a9510
BLAKE2b-256 8cff54706ad2fa543123c65aece73bcdfc812beef92f565036b541a97e15fb95

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fab3392af35f21c05e62ebafaf5fb89bc4eebd8dfbad13f5269b66be44880a4e
MD5 531491f9bb7938e7d602e0bb5c6b1277
BLAKE2b-256 336f10b0721c058b8a37707cb7f2b6e5f5e93b8694602c4e40fd32cb3cd9010f

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3480f0f5d52b96ccb5579d0fbafede8e5a8d511ed06f8f3f8fee822ec362596c
MD5 1fb32da56467fa2e2bdc2b9e13a0a03d
BLAKE2b-256 35e2764c1b56fc5a6eb211d7526ef7617714dfbe3f157891aa7bd7479c001fbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bb2729cc8a770d6118cdebaba0eb4c048d17684196919bf12f4f20e69db1c23
MD5 4f8daf986581ab564ed08295a557a0b0
BLAKE2b-256 be2bf0daff369ac3829af9110018d2d1b7f28d46de074986628569c7ba6e50ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c2d478f83fd8cba4ea7f131154d598f1721905083e12502ebf3eec64a40f3261
MD5 889a0d01b6961fdb27436c7e59ed9047
BLAKE2b-256 ca136374675991f4d5e13a0057d49e3810ed94141c98471f0d7f91caf9fadbd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8bc154a554d857b9456f27387f4af216ee0c7bf152bf45f197516cc25a5bf4d9
MD5 159592bc421f90740370a9a94c851bcc
BLAKE2b-256 5757adc781285daeb9021783a086f88b919c645f1db1a2b6be09c3e6dbf75e32

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0390dccc938b67b973579ffac40e3fd849bfc7423c1143720bbdd674d7429921
MD5 010a5cb4c32965e5ca44a62d8b84f267
BLAKE2b-256 8f99582c48e5843ed478947ebfeadf84ff9b2c59992b759084f009e18c2c441f

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ee594ce41c1b9c74cd899ef4a0faa5f61fbcf54a1f3cf0b2265c9f783ab5858
MD5 614d75f7b20b170640719964303aa7e5
BLAKE2b-256 1ee79d466d0a1cfad0c091b62f4a716d1129466eff40b9106bb6b706b76b8b71

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 35cf65dde216f9718429aae2c7dabe4d772fe3e526d40c7c7cc37c67b17e51b3
MD5 05c412bb1675820f407ea421e86174a6
BLAKE2b-256 7ae974e52efa8b0f96eb0f42c8ae24d2c6f41934491776197cc24856dda15b46

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d68f2555c7f94c6fb99ccb183b49be601da432b5edb67b6df1a3489dedba07b1
MD5 2da0055c03fcff2f90d043dc116d767a
BLAKE2b-256 1de32483314ad420a7825a2e48804f200696d39657eb4773818eddb008750fda

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05b9378e4e0c6a2e587d152e9ba6558ca74d6826f2f088993c3a40a4a32d7513
MD5 2291dfcf722d75f6e8e1cdda19f6bab7
BLAKE2b-256 12f01d855cc3a6267014b0e62a3500f7134bf1ce80713212a7d8e2f2e2d7fcbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d8ecc6c5b7073dfb20bea4ff36e58826bf8e4edd33538afcf939a926768dd17
MD5 9ad1547735f665d741ae9d797820381a
BLAKE2b-256 01db35704023eb950c6ddc9157e190d9ae50e03c1323978d4543cf128f4216c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cbd3c9ba50d7a14d6077fad7e5e62cd35081170c3c41760dfaab77953cdc0b93
MD5 f69d418e14c64cadc118f2a4e7023a96
BLAKE2b-256 5e854e84de638db321e3576187e73870dfe980406c27e8d3ed8041717b730938

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: xtea_cython-0.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 57.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xtea_cython-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 677c8b968df9e0faf17093a76a33e3dcb7322d0ca72f8913513920f563e8b29c
MD5 310e7bab9a624a71a4d81678ddcda225
BLAKE2b-256 5ebaefdfecf26563075c002fed2b63cd53af2aa96eb5158e2c50f0b31023980a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp39-cp39-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 281767a77b5026ab10a89453c6e5a0331035572e6ee722fb66fd37477e58e523
MD5 3839b3c12d46eaaeb0123fec8706630e
BLAKE2b-256 61b567fe2d53e36db28ce62cadce5c878c4d0846aaa890255f4038e170b20bba

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a3fe2dc2ab42d1fadef3f72e5ee79888947bbaa063b17eab7046e16aefafe8f
MD5 d7772a0cc8adbd335b3ddfd632c640ff
BLAKE2b-256 ea7bfc14d30ad235e01292debbadf1c180b66eb30cc8e74c03a46923ffd46d73

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e57553c808a0cc58bdc61d3c63f1aeb7cd210362c2ed97b4ff3a55a52fb914a5
MD5 de8547b713417be35195134b3cfac655
BLAKE2b-256 ee35be1e6dc78bda0e6aa34251f0abf0460c510f17156a227fe0e36dbed3f4ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: xtea_cython-0.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 58.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xtea_cython-0.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cfb4017af19dbf456f0b13911c446f7295af95d9d46c720962fa672d803331d5
MD5 416eaff9c536082546341a62caaa5a54
BLAKE2b-256 7593001ac98990e036a0ea0c96024cf22464a8af5ba79cf94a9713b649b39e5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp38-cp38-win_amd64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 996f1293abc0e71cc5142c42020834cd2a0167c040c9f7c38873760cd4e4c087
MD5 2fcd0660c6b65f11cd287e2485c16a03
BLAKE2b-256 03e5bc8ed127b6489eddc1ce4d3ab561ef531e634957364f753b856c01005e79

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 450faaff00ae44de523216380007b5828cb32467c9a0c4ce7366211840fd2b10
MD5 2fb62eb13f94692239aab2405638b03e
BLAKE2b-256 e1e3fd0a3cb5a533eddc1afd8283d5341751f5d171a15567aad147ff4aed4ce2

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xtea_cython-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ebc6350d4b95e7763116344a7ad34b27db43cdd808db2c3b6581107fbf2889a9
MD5 72912512b1605ba37a79f3121926dacf
BLAKE2b-256 95f838d31483872fc3becffb614263f09d4684dbb08c82304173448231be5f22

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on somjik-api/xtea_cython

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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