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.1.tar.gz (17.7 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.1-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cryptoserve_core-0.4.1.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cryptoserve_core-0.4.1.tar.gz
Algorithm Hash digest
SHA256 9e2432f59af777ecdc7352a63ac11bf0fdd3f93f3ac82fc02c98a25c41bc5c69
MD5 b9b58611023b1b1a447cd9d1899713e0
BLAKE2b-256 53489b310d40015c8577940c5562c80c257a923cff04c78abddc096382749039

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cryptoserve_core-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f23fe872b434e57c263605b72dca0f8bc17cad4b5868501ad406e2ca266ed204
MD5 1880a116131a8e79e4fab88da9db8a96
BLAKE2b-256 70ee2a55617019431a047c15d5c608157b54b7f3f5595cfabdc82869062dbf34

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