Secure hybrid RSA + AES encryption library with CLI
Project description
Dreamstone
Dreamstone is a Python library and CLI tool for asymmetric encryption using RSA and AES-GCM, enabling easy key generation, data encryption, and decryption of files or base64-encoded data.
Installation
Install with Poetry (recommended):
poetry install
poetry run dreamstone --help
Or via pip (when available):
pip install dreamstone
dreamstone --help
CLI Usage
Generate RSA key pair
dreamstone genkey --private-path private.pem --public-path public.pem
Encrypt a file
dreamstone encrypt-file --input-file secrets.txt --public-key-file public.pem --output-file encrypted.json
Encrypt base64 data and generate keys
dreamstone encrypt-file \
--input-data "TWluaGEgbWVuc2FnZW0gc2VjcmV0YQ==" \
--private-key-path private.pem \
--public-key-path public.pem \
--output-file encrypted.json
Decrypt file and print to stdout
dreamstone decrypt-file encrypted.json --private-key-file private.pem --password YOUR_PASSWORD_HERE
Decrypt file and save output
dreamstone decrypt-file encrypted.json --private-key-file private.pem --password YOUR_PASSWORD_HERE --output-file decrypted.txt
Python Usage Examples
from dreamstone.core.keys import generate_rsa_keypair, save_rsa_keypair_to_files, load_private_key, load_public_key
from dreamstone.core.encryption import encrypt, encrypt_with_auto_key
from dreamstone.core.decryption import decrypt
from dreamstone.models.payload import EncryptedPayload
# Generate RSA key pair and save to files
private_key, public_key = generate_rsa_keypair()
password = save_rsa_keypair_to_files(private_key, public_key, "private.pem", "public.pem", password=None)
print(f"Generated keys saved. Use this password to decrypt: {password}")
# Encrypt raw data with existing public key
with open("public.pem", "rb") as f:
pub_key = load_public_key(f.read())
plaintext = b"My secret message"
enc_result = encrypt(plaintext, pub_key)
payload = EncryptedPayload(**enc_result)
# Save encrypted payload JSON
with open("encrypted.json", "w") as f:
f.write(payload.to_json())
# Decrypt the payload with private key and password
with open("private.pem", "rb") as f:
priv_key = load_private_key(f.read(), password=password.encode())
decrypted = decrypt(
encrypted_key=payload.encrypted_key,
nonce=payload.nonce,
ciphertext=payload.ciphertext,
private_key=priv_key,
)
print("Decrypted message:", decrypted.decode())
License
MIT License
Contact
For issues and contributions, please open an issue or pull request on the repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dreamstone-0.1.1.tar.gz.
File metadata
- Download URL: dreamstone-0.1.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.2 Linux/6.1.0-37-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db5bc385fd05065479adc6cf9425cbb5142562d872fdf52d3c3b13d99cde2433
|
|
| MD5 |
f885891ce049e4b65b2917a87ef8f6e0
|
|
| BLAKE2b-256 |
b4602823f81fe6c443b693f9be103d162998a609db61edd7242d3d72c15fc543
|
File details
Details for the file dreamstone-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dreamstone-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.2 Linux/6.1.0-37-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03f823af618f65cc9504d6a8725ee8e248227cd287d24d7dae23bd16b7aa0dd6
|
|
| MD5 |
dbfdfdf80f80e31aac735cce2f8eb74b
|
|
| BLAKE2b-256 |
068afaaaaef32eae78d4f4b8ebb330daecc1be63a5d8652fdf78d8171ea61f7b
|