Cryptography tool based on RSA and AES
Project description
NyxCrypta
A Python cryptography library combining RSA asymmetric encryption and AES symmetric encryption for efficient and secure data protection.
📑 Table of Contents
- Features
- Security Levels
- Installation
- Usage
- Security Features
- Testing
- Key Format Support
- Python Example
- Dependencies
- Internal Architecture
- FAQ
- Security Considerations
- Development Status
- Contributing
- Bug Reports
- License
- Authors
Features
- 🔐 RSA key pair generation with multiple security levels
- 📄 Multiple key formats support (PEM, DER, SSH)
- 🔒 File encryption and decryption
- 💾 Raw data encryption and decryption
- 🛡️ Strong encryption using RSA + AES hybrid approach
- 🔄 Key format conversion utilities
- 🖥️ Interactive CLI for beginners
Security Levels
| Security Level | RSA Key Size | Recommended Use |
|---|---|---|
| Standard | 2048-bit | General purpose encryption |
| High | 3072-bit | Sensitive data protection |
| Paranoid | 4096-bit | Maximum security requirements |
Installation
From PyPI
pip install nyxcrypta
From Source
git clone https://github.com/Division-of-Cyber-Anarchy/NyxCrypta.git
cd NyxCrypta
pip install -e .
Usage
Interactive CLI
Launch the interactive mode:
nyxcrypta
The interactive CLI provides a beginner-friendly interface with:
- Step-by-step wizards for all operations
- Clear explanations of each option
- Secure password input
- Progress indicators
- Tab completion
Key Generation
# Generate PEM format key pair
nyxcrypta keygen -o ./keys -p "your_strong_password" -f PEM
# Generate DER format key pair
nyxcrypta keygen -o ./keys -p "your_strong_password" -f DER
# Generate SSH format public key
nyxcrypta keygen -o ./keys -p "your_strong_password" -f SSH
Key Format Conversion
# Convert PEM to DER
nyxcrypta convert -i ./keys/public_key.pem -o ./keys/key.der --from-format PEM --to-format DER
# Convert DER to SSH (public key only)
nyxcrypta convert -i ./keys/public_key.der -o ./keys/key.ssh --from-format DER --to-format SSH --public
File Encryption/Decryption
# Encrypt a file
nyxcrypta encrypt -i file.txt -o file.nyx -k ./keys/public_key.pem
# Decrypt a file
nyxcrypta decrypt -i file.nyx -o file.txt -k ./keys/private_key.pem -p "your_password"
Data Encryption/Decryption
# Encrypt raw data
nyxcrypta encryptdata -d "My secret data" -k ./keys/public_key.pem
# Decrypt raw data
nyxcrypta decryptdata -d "encrypted_hex_string" -k ./keys/private_key.pem -p "your_password"
Security Features
| Feature | Description |
|---|---|
| Hybrid Encryption | RSA for key exchange, AES for data encryption |
| Key Derivation | Argon2 for secure password-based key generation |
| Random Generation | Secure random number generation using OS entropy |
| Multi-level Security | Support for different RSA key sizes |
| Private Key Protection | Encrypted storage of private keys |
Testing
Run the comprehensive test suite:
nyxcrypta test
Key Format Support
Public Keys
- PEM format (.pem)
- DER format (.der)
- OpenSSH format (.ssh)
- JSON format (.json)
Private Keys
- PEM format (.pem)
- DER format (.der)
- JSON format (.json)
Python Example
from nyxcrypta import NyxCrypta, SecurityLevel, KeyFormat
# Initialize NyxCrypta
nx = NyxCrypta() # Uses STANDARD security level by default
# Generate key pair
nx.save_keys("./keys", "your_password", KeyFormat.PEM)
# Encrypt a file
nx.encrypt_file("secret.txt", "secret.nyx", "./keys/public_key.pem")
# Decrypt a file
nx.decrypt_file("secret.nyx", "decrypted.txt", "./keys/private_key.pem", "your_password")
# Encrypt and decrypt data
message = b"Hello, World!"
encrypted = nx.encrypt_data(message, "./keys/public_key.pem")
decrypted = nx.decrypt_data(bytes.fromhex(encrypted), "./keys/private_key.pem", "your_password")
print(decrypted.decode()) # Prints: Hello, World!
# Using higher security level
nx_secure = NyxCrypta(SecurityLevel.PARANOID)
nx_secure.save_keys("./secure_keys", "your_password", KeyFormat.PEM)
# Key format conversion
from nyxcrypta import KeyConverter
# Convert public key from PEM to SSH format
with open("./keys/public_key.pem", "rb") as f:
pem_data = f.read()
ssh_key = KeyConverter.convert_public_key(pem_data, KeyFormat.PEM, KeyFormat.SSH)
with open("./keys/public_key.ssh", "wb") as f:
f.write(ssh_key)
# Convert private key from PEM to DER format
with open("./keys/private_key.pem", "rb") as f:
pem_data = f.read()
der_key = KeyConverter.convert_private_key(
pem_data,
KeyFormat.PEM,
KeyFormat.DER,
"your_password".encode()
)
with open("./keys/private_key.der", "wb") as f:
f.write(der_key)
Dependencies
| Package | Version | Purpose |
|---|---|---|
| cryptography | >=41.0.5 | Core cryptographic operations |
| argon2-cffi | >=20.1.0 | Password hashing and key derivation |
| cffi | >=1.17.1 | C interface for cryptographic operations |
| tqdm | >=4.67 | Progress bars for operations |
| rich | >=13.7.0 | Rich text and beautiful formatting in the terminal |
Internal Architecture
Core Components
---
config:
layout: fixed
theme: neo-dark
look: handDrawn
---
graph LR
A[Hybrid Encryption]
B[Strong Key Derivation]
C[Secure Random Number Generation]
D[Multiple Security Levels]
E[Encrypted Private Key Storage]
subgraph "Core Components"
A -->|Uses| F(RSA for Key Exchange)
A -->|Uses| G(AES for Data Encryption)
B -->|Based on| H(Argon2 Algorithm)
C -->|Provided by| I(Cryptography Library)
D -->|2048-bit, 3072-bit, 4096-bit| J(RSA Key Sizes)
E -->|Secured by| B
E -->|Formats| K(PEM, DER)
end
CLI -->|Triggers| A
CLI -->|Triggers| E
Utils -->|Supports| B
Utils -->|Supports| C
Module Structure
-
Core Functions (
core/)crypto.py: Encryption/decryption logicsecurity.py: Key derivation and storageutils.py: Utility functionscompatibility.py: Format compatibility
-
CLI Interface (
cli/)commands.py: Command definitionsparser.py: Input parsing
-
Testing (
test_runner.py)- Automated testing suite
- Performance metrics
FAQ
What is hybrid encryption?
NyxCrypta uses RSA for secure key exchange and AES for efficient data encryption, combining the strengths of both approaches.
Why use Argon2?
Argon2 provides strong protection against brute-force attacks and is computationally expensive by design.
How secure is the random number generation?
We use os.urandom and the cryptography library's secure random number generators.
What security level should I choose?
- Standard (2048-bit): General use
- High (3072-bit): Sensitive data
- Paranoid (4096-bit): Maximum security
How are private keys protected?
Private keys are encrypted using Argon2-derived keys and stored in encrypted PEM or DER format.
Security Considerations
- Use strong passwords for private keys
- Keep private keys secure
- Choose appropriate security levels
- Update encryption keys regularly
- Verify file integrity
Development Status
Current status: Active Development
- API may change
- Some experimental features
- Ongoing security audits
Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
Bug Reports and Feature Requests
Use the GitHub issue tracker
License
MIT License - see LICENSE file
Authors
Division of Cyber Anarchy (DCA)
Contact
GitHub
https://github.com/Division-of-Cyber-Anarchy/
Simplicity is the ultimate sophistication. - Leonardo da Vinci
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 nyxcrypta-1.5.0.tar.gz.
File metadata
- Download URL: nyxcrypta-1.5.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
724f51198cd234daeea031533d800289cfa41c2177ee0155ccc70657dbdc71a0
|
|
| MD5 |
39882c6cb26b36d9df636c1166e1b655
|
|
| BLAKE2b-256 |
99b3bf5888c9de9a0ce826fe98a114fddf0be9cb88884de33b15cf51b4cb9e31
|
File details
Details for the file nyxcrypta-1.5.0-py3-none-any.whl.
File metadata
- Download URL: nyxcrypta-1.5.0-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f99c4597e9292a91fd99239961bb1d78bf5a4b4273d78e0c6317f031db8a6d6c
|
|
| MD5 |
4dfea7dbed3cd25af576c3805ebdf7f6
|
|
| BLAKE2b-256 |
dd8b0280a34741d3c2869b277b7c1f09fccadd7a018e67e62e956216e4aab4d3
|