Skip to main content

CryptoServe Core - Pure cryptographic primitives

Project description

cryptoserve-core

Security Audit

Pure cryptographic primitives for Python. Zero network dependencies, one pip install, production-ready defaults.

Installation

pip install cryptoserve-core

Quick Start

import cryptoserve_core as crypto

# Encrypt a string with a password
encrypted = crypto.encrypt_string("sensitive data", password="my-secret")
decrypted = crypto.decrypt_string(encrypted, password="my-secret")

# Hash a password (scrypt, PHC format)
hashed = crypto.hash_password("user-password")
assert crypto.verify_password("user-password", hashed)

# Create a JWT token
token = crypto.create_token({"sub": "user-123"}, key=b"my-secret-key-1234567890")
claims = crypto.verify_token(token, key=b"my-secret-key-1234567890")

Easy Encryption

Password-based encryption using PBKDF2 (600K iterations) + AES-256-GCM. Each call generates a fresh random salt and nonce.

from cryptoserve_core import encrypt, decrypt, encrypt_string, decrypt_string

# Bytes
ciphertext = encrypt(b"secret bytes", password="my-password")
plaintext = decrypt(ciphertext, password="my-password")

# Strings (returns URL-safe base64)
encoded = encrypt_string("secret text", password="my-password")
text = decrypt_string(encoded, password="my-password")

File Encryption

Files under 64KB use a single encrypted blob. Larger files use chunked encryption for memory efficiency.

from cryptoserve_core import encrypt_file, decrypt_file

encrypt_file("report.pdf", "report.pdf.enc", password="file-password")
decrypt_file("report.pdf.enc", "report.pdf", password="file-password")

Password Hashing

Secure password hashing with scrypt or PBKDF2. Output follows the PHC (Password Hashing Competition) string format for safe database storage.

from cryptoserve_core import hash_password, verify_password, check_strength

# Hash (default: scrypt)
hashed = hash_password("user-password")
# Output: $scrypt$n=16384,r=8,p=1$<salt>$<hash>

# Hash with PBKDF2
hashed = hash_password("user-password", algorithm="pbkdf2")
# Output: $pbkdf2-sha256$i=600000$<salt>$<hash>

# Verify (constant-time comparison)
assert verify_password("user-password", hashed)

# Strength check (0-4 score)
result = check_strength("P@ssw0rd!2026")
print(f"Score: {result.score}/4 ({result.label})")
print(f"Feedback: {result.feedback}")

JWT Tokens

Minimal JWT implementation using HS256 (HMAC-SHA256). No pyjwt dependency.

from cryptoserve_core import create_token, verify_token, decode_token

key = b"my-secret-key-minimum-16-bytes"

# Create with automatic iat/exp claims
token = create_token({"sub": "user-123", "role": "admin"}, key=key, expires_in=3600)

# Verify signature and expiry
claims = verify_token(token, key=key)

# Decode without verification (inspect claims)
claims = decode_token(token)

Low-Level API

For custom key management and direct cipher access:

from cryptoserve_core import AESGCMCipher, ChaCha20Cipher, KeyDerivation

# Generate a key
key = KeyDerivation.generate_key(256)

# AES-256-GCM encryption
cipher = AESGCMCipher(key)
ciphertext, nonce = cipher.encrypt(b"sensitive data")
plaintext = cipher.decrypt(ciphertext, nonce)

# ChaCha20-Poly1305 encryption
cipher = ChaCha20Cipher(key)
ciphertext, nonce = cipher.encrypt(b"sensitive data")
plaintext = cipher.decrypt(ciphertext, nonce)

# Key derivation from password
key, salt = KeyDerivation.from_password("my-password", bits=256, iterations=600_000)

Supported Algorithms

Algorithm Security Use Case
AES-256-GCM 256-bit General purpose, hardware accelerated
ChaCha20-Poly1305 256-bit Mobile, real-time applications
scrypt N=16384, r=8, p=1 Password hashing (interactive)
PBKDF2-SHA256 600K iterations Password hashing (compatibility)
HS256 HMAC-SHA256 JWT token signing

Why cryptoserve-core?

  • Zero config - Production-safe defaults for every algorithm
  • No server required - Works entirely offline
  • One dependency - Only cryptography (no pyjwt, bcrypt, argon2-cffi)
  • Auditable - Small, focused codebase with continuous security validation
  • Standards compliant - NIST-approved algorithms, PHC hash format

License

Apache 2.0

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

cryptoserve_core-0.4.2.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

cryptoserve_core-0.4.2-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file cryptoserve_core-0.4.2.tar.gz.

File metadata

  • Download URL: cryptoserve_core-0.4.2.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for cryptoserve_core-0.4.2.tar.gz
Algorithm Hash digest
SHA256 ee981eb17d98325a9db91a03d13f30f85a463f2164ffcc22880de44554236a97
MD5 77c179ae284173cf1db2a3095ef2684b
BLAKE2b-256 50a6900b126c2e098e694e9be7b58c6ced377d68efa54435b49df0947aa923f3

See more details on using hashes here.

File details

Details for the file cryptoserve_core-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cryptoserve_core-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f874622b14bb70113b7c36125d02d8c2fff5a8a2272bd7baf5f95f72b8a6489e
MD5 ff5a7a1ae81b16206a5a1eca675eb294
BLAKE2b-256 46bf220fe21c20fd438cf683c2d84005fbdea3ef58d7d7032dfc330121a85b93

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page