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.2.0b1.tar.gz (155.9 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.2.0b1-cp313-cp313-win_amd64.whl (57.1 kB view details)

Uploaded CPython 3.13Windows x86-64

xtea_cython-0.2.0b1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp313-cp313-macosx_11_0_arm64.whl (59.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp313-cp313-macosx_10_13_x86_64.whl (58.5 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

xtea_cython-0.2.0b1-cp312-cp312-win_amd64.whl (57.9 kB view details)

Uploaded CPython 3.12Windows x86-64

xtea_cython-0.2.0b1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp312-cp312-macosx_11_0_arm64.whl (60.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp312-cp312-macosx_10_13_x86_64.whl (59.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

xtea_cython-0.2.0b1-cp311-cp311-win_amd64.whl (57.1 kB view details)

Uploaded CPython 3.11Windows x86-64

xtea_cython-0.2.0b1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp311-cp311-macosx_11_0_arm64.whl (59.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp311-cp311-macosx_10_9_x86_64.whl (57.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

xtea_cython-0.2.0b1-cp310-cp310-win_amd64.whl (57.1 kB view details)

Uploaded CPython 3.10Windows x86-64

xtea_cython-0.2.0b1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp310-cp310-macosx_11_0_arm64.whl (59.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp310-cp310-macosx_10_9_x86_64.whl (58.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

xtea_cython-0.2.0b1-cp39-cp39-win_amd64.whl (57.3 kB view details)

Uploaded CPython 3.9Windows x86-64

xtea_cython-0.2.0b1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp39-cp39-macosx_11_0_arm64.whl (59.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp39-cp39-macosx_10_9_x86_64.whl (58.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

xtea_cython-0.2.0b1-cp38-cp38-win_amd64.whl (58.3 kB view details)

Uploaded CPython 3.8Windows x86-64

xtea_cython-0.2.0b1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

xtea_cython-0.2.0b1-cp38-cp38-macosx_11_0_arm64.whl (61.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

xtea_cython-0.2.0b1-cp38-cp38-macosx_10_9_x86_64.whl (59.4 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file xtea_cython-0.2.0b1.tar.gz.

File metadata

  • Download URL: xtea_cython-0.2.0b1.tar.gz
  • Upload date:
  • Size: 155.9 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.2.0b1.tar.gz
Algorithm Hash digest
SHA256 9ee757317f685cb238f47ad9dc1f299a6d6a56e423b9e64062d73f001edafac7
MD5 bd772b197e88dab212afe117350b44ee
BLAKE2b-256 95ffb955ea6e6a9662d6de0d1ab1c4f3c80af620ceda5dd03783b3045810e4b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1.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.2.0b1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bf003bdc0d4eb81507d8c9560c7475a6c12096e28d76658699f6e0a529a881a1
MD5 5109196aed375f34c75a26645d256489
BLAKE2b-256 05b552bfe2d302159f168368df18093883198f534df306544c2347a42bf2b9e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aee9fd311fff24e92a31021776a6aee329112c78ae70238434a68295345d223d
MD5 66acd004ec01d65a452df2d02213b7d7
BLAKE2b-256 f568a24346069800c43d2f3300e926394e9f955c4af1a262abbc3591546708ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d51c8cbe0f39b2e676ca35968c2f2d6148d121a9f4f894ad9964a7d280f3af29
MD5 618a2c461f601d84073a72da5a92e0b2
BLAKE2b-256 a37f6101da64b486105ef9b68c529ff8ed2ccf7a90f9ade0c4d18162fc87f7ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 52586df2e78e888eeee3ec2c40f9a7ed3e9fd81bdaa5a8afbd4ac3a4fb54b423
MD5 b9181941479edce8c6d6ac995b02f178
BLAKE2b-256 02502e1c28f183ee3aa101d61f133178726e25b84d0ab65d1a79c52e11d411bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bc855a7adf21d40f6b4388395c3dfce4075adc527c56bf588e3f1e81fb26d0d8
MD5 4e236c0d35243eca9ee974bbe24e1a28
BLAKE2b-256 9f8189897994b0d4a80270244d78c90b25f3f885a0e8a005238282e7949771d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b297ae5163355520a95eccf560a533921a3ac4bede7ee543c9ace4e75cc887ae
MD5 353bd56583546557bcd292b60882acda
BLAKE2b-256 55d50a7099da8d793b6428ca09b2c2effd3ccf94a259d809fd6739175317e9a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9a7bd4aacad7eba823e2216d42797804fec713244698d40f594c42942963a93
MD5 6c40d1e856e4d185ea89f1b902e9fb6f
BLAKE2b-256 7fb4689fd690b93392b0f1b2d7e17b46a99f52f7533f9b142b0f41ff69391ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6ac2f1df0e786aec8533057fceaf792c066781d823c398c9905c986d07c5e4e1
MD5 f2525e47b0fc2e9f20d72423799163d7
BLAKE2b-256 d64b2f92b6a4f0996167f710221684eb62d57287d9368e106411f855acc1b3d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 af14d2d25dd8e2436c955f56054f44984cafb05faf6b916687dfa274d88f008d
MD5 938544f802d12fc145f8aebf4912d1ad
BLAKE2b-256 a6264e5d31a082aa5d8b07d825a8a87d59d01aeb55cd496d2a1a39bfa953ce00

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b22f6f1d2891a65ab7ea403d469ef46fdbc5f945cef80252da7643bb492bf66
MD5 d423c107e0f7c377ff86c02172736c7f
BLAKE2b-256 904dc13c826f39cc4650ee623886013c74d121bb5570999674a3df966c6b2327

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d8393c86716b35d8e81bb9a9a29ff8c004b1643fa1dbd2e1c4e139859ba8c84
MD5 e07080c8ab4d855f8667a8b5cbc8f88f
BLAKE2b-256 46a916f7dbc5ca093a62fb7f28e592dac74ac614df4b2572e4152feb54eee72b

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 31093b7397d029f4f88199b0f5636266d1ef47e2721190873094fc2997d8a248
MD5 8ce8fbe15931a860b5780d2eb9cba1a3
BLAKE2b-256 b55ceab902e4ef203f2f97203fdac01f3da0ba84b8e38f4a78733602263102d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 005385e95c36136cc7be5f5430fc2162b4d4cb3749dd5c2fd138c05d840a68e9
MD5 98eb32353c3f275e536e8f8350e86dec
BLAKE2b-256 12ceef94bad7527166f3487878618f9287e6f71b0b0ac6593ed52a6f27fbc31f

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4e2dfc900bcdde3a771009fa4d65f30519f934c4b85626d61b1af83612042915
MD5 3469ce6c9d5759dad6efc1530dc07ec3
BLAKE2b-256 12fac7df02124fff31a584b27060146400f97dcdd407c95fa9241860f63025a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ed07fd3373b7d2b6b136741c08abb78bef987317032fa60a2d87e7a2dbaafc4
MD5 0ddd9c70f47288428f24e5fa6bc63066
BLAKE2b-256 84c0a0a28395e1404484daa160272405cec7c3a9ed5148d24c464cbe027f44f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2d732248e0142a64e5b3445c9ac4abbcc56dc8fc2c09ec944bc8a268c4095fbc
MD5 69cc147b6f2772b404acebccee378390
BLAKE2b-256 310e8f2f51094a3bbd8fae50c47a67a24cfebf62a8450a165b17c578941e1955

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f841dcc6b747b5a2e013d18b0b4c0a756c09fcb5faaa49c02eedfe1ddf7598d4
MD5 d806a12b0d9d4d38887b9a4e27f83ac4
BLAKE2b-256 696f3e2f7493ba746a4b969a3ca58f43d16d9de567ace7179bb1d99ffc7e3f12

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7c33e91af3e4c7ce9e48e59df537fbfb9ef948c0cd7801e39169d01860f8a59
MD5 ffd1039c18e8f778d98f026cc45fe6bf
BLAKE2b-256 d67345d8b2bd5998c1401d4f6cf8b9a214bdfbb63f97f1532988663dfda30be6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 219b50f4d3ccf0b323561fdc67822934162a3e71e9b9b2d21344f280af1b7653
MD5 74c3347921c4470efe5c892167b6ecb3
BLAKE2b-256 654781946079b46d832ad892833c3a378b66f44563c35dbadb422656d0844edb

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 541d58e6d18056b9167f73561187216df32515d434e906f45526474ccac79685
MD5 ff75141e46b56bfc2154e9466a7b15cc
BLAKE2b-256 37dd9605ffb30f343efc0256a83ac6627187e85bab5a9c3e73e31e70f88fbb2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e58bab80c22cce930815d716121d279ce68b658fb55b39e4308e9a8cf5ff8811
MD5 e91fd95dcfe5b4d34dc7b2160ec9d964
BLAKE2b-256 5e48258eea110916b1dd2640d55e94772eff9ffcfdcc5262ac144f3d29055ea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d410d02c8d34c36028db3574202fc27519afccaf9e3c1b14b200e2567bf0f4b6
MD5 e9a8d01eb9ed4b96a43103d94f664d29
BLAKE2b-256 78d44b4c57588d520b8ffeaf6c069fc502f2fe05f01c619b1e3177f2610c93fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 194d0468535c2e11695ff243e2bfbe5fe2ef4a0407fa66c687dd28d3fb55d650
MD5 dd677f397a3539ffb02011ad36679165
BLAKE2b-256 a256e10f9c7d86fa66166c5bcbcf595a6944c68a353b83c7db01f1beb4e4e004

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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.2.0b1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xtea_cython-0.2.0b1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f39b737ee2bbb886cde0d07653c99a73d60c8cfb14a6deebaa2fb82c442abd98
MD5 9233ca53d8f01109bba78b9df477ba3d
BLAKE2b-256 7e3c07d888f00e249e36f958a6f86423128abc5b7c40cc42db09bdc40c902185

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtea_cython-0.2.0b1-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