A Bespoke Multi-Layer Cryptographic Tool
Encrypting data through multiple layers with random salts and encrypted decryption keys
crypt-tick is a sophisticated cryptographic tool that applies multiple layers of encryption to your data using randomly selected methods and randomly generated salts. The unique feature is that it creates an encrypted decryption key that contains all the instructions needed to decrypt your data, but the key itself is encrypted!
Think of it as a cryptographic onion ๐ง - each layer adds another level of security, and only with the correct password can you peel back the layers to reveal your original data.
- ๐ Multi-Layer Encryption: Apply multiple encryption methods in sequence
- ๐ฒ Random Method Selection: Each layer uses a randomly chosen encryption method
- ๐ง Random Salt Generation: Random-length salts (8-40 bytes) for each layer
- ๐ Encrypted Decryption Key: The key itself is encrypted and contains all instructions
- ๐ String & File Support: Encrypt/decrypt both strings and files
- ๐จ Beautiful CLI Interface: Interactive mode with colored output
- โก Multiple Encryption Methods: AES-256-GCM, ChaCha20-Poly1305, Fernet, XOR-Custom, Base64, ROT13
- ๐ก๏ธ Authenticated Encryption: Uses GCM and Poly1305 for integrity protection
- Python 3.8 or higher
cryptographylibrary (optional but recommended)
pip install cryptographygit clone <repository-url>
cd crypt-tickpython crypt-tick.py --interactiveEncrypt a string:
python crypt-tick.py --encrypt-string "Hello, World!" --password "mypassword" --methods "AES-256-GCM,XOR-Custom,Base64" --layers 3Encrypt a file:
python crypt-tick.py --encrypt-file "secret.txt" --password "mypassword" --methods "ChaCha20-Poly1305,Fernet" --layers 5Decrypt a string:
python crypt-tick.py --decrypt-string "encrypted_base64_data" --password "mypassword"- Input: Your data (string or file)
- Layer Application: Apply multiple encryption layers with random methods
- Salt Generation: Generate random-length salts for each layer
- Key Creation: Create an encrypted "instruction manual" for decryption
- Output: Encrypted data + encrypted decryption key
- Key Decryption: Use password to decrypt the instruction key
- Instruction Reading: Parse the decryption instructions
- Reverse Processing: Apply decryption methods in reverse order
- Salt Usage: Use stored salts to derive keys
- Output: Original data restored
Original Data: "Hello, World!"
โ Layer 1: AES-256-GCM (random salt: 23 bytes)
โ Layer 2: Base64 encoding
โ Layer 3: XOR-Custom (random salt: 15 bytes)
Encrypted Data: "qqy7KdTUb/aYnIeMSJz68M2YAgE="
| Method | Description | Security Level | Availability |
|---|---|---|---|
| AES-256-GCM | AES-256 in GCM mode (authenticated encryption) | โญโญโญโญโญ | Requires cryptography |
| AES-256-CBC | AES-256 in CBC mode | โญโญโญโญ | Requires cryptography |
| ChaCha20-Poly1305 | ChaCha20-Poly1305 authenticated encryption | โญโญโญโญโญ | Requires cryptography |
| Fernet | Fernet symmetric encryption (AES-128 + HMAC) | โญโญโญโญ | Requires cryptography |
| XOR-Custom | Custom XOR encryption with key expansion | โญโญ | Always available |
| Base64 | Base64 encoding (obfuscation, not encryption) | โญ | Always available |
| ROT13 | ROT13 cipher (Caesar cipher variant) | โญ | Always available |
The interactive mode provides a user-friendly interface:
================================================================================
BESPOKE CRYPTOGRAPHIC TOOL
Multi-Layer Encryption with Random Salts
================================================================================
Main Menu:
1. Encrypt String
2. Encrypt File
3. Decrypt String
4. Decrypt File
5. View Available Methods
6. Exit
- Guided Encryption: Step-by-step process for encrypting data
- Method Selection: Choose from available encryption methods
- Layer Configuration: Set number of encryption layers (1-10)
- File Management: Automatic file naming and organization
- Error Handling: Clear error messages and recovery options
crypt-tick/
โโโ crypt-tick.py # Main application
โโโ logo.jpg # Application logo
โโโ README.md # This file
- PBKDF2: Uses 100,000 iterations for key derivation
- SHA-256: Secure hash function for key derivation
- Random Salts: Unique salt for each encryption layer
- Authenticated Encryption: GCM and Poly1305 provide integrity protection
- Random IVs/Nonces: Fresh random values for each encryption
- Multiple Layers: Each layer adds another level of security
- Encrypted Instructions: Decryption key is itself encrypted
- Random Lengths: Salts are 8-40 bytes in length
- Cryptographically Secure: Uses
secretsmodule for randomness - Unique Per Layer: Each layer gets its own unique salt
python crypt-tick.py [OPTIONS]
Options:
--interactive, -i Run in interactive mode
--encrypt-string STRING Encrypt a string
--decrypt-string STRING Decrypt a string
--encrypt-file FILE Encrypt a file
--decrypt-file FILE Decrypt a file
--password, -p PASSWORD Password for encryption/decryption
--methods METHODS Comma-separated list of encryption methods
--layers LAYERS Number of encryption layers (default: 3)
--output, -o OUTPUT Output file path
--help, -h Show help messagepython crypt-tick.py --encrypt-string "My secret message" --password "secure123" --methods "AES-256-GCM,ChaCha20-Poly1305,Fernet" --layers 5Output:
Starting encryption with 5 layers...
Layer 1/5: ChaCha20-Poly1305
Layer 2/5: Fernet
Layer 3/5: AES-256-GCM
Layer 4/5: ChaCha20-Poly1305
Layer 5/5: Fernet
Encrypted data (base64): [encrypted_data]
Decryption key: [encrypted_key_json]
python crypt-tick.py --encrypt-file "document.pdf" --password "filepass" --methods "AES-256-GCM,XOR-Custom" --layers 3Output:
Starting encryption with 3 layers...
Layer 1/3: XOR-Custom
Layer 2/3: AES-256-GCM
Layer 3/3: XOR-Custom
File encryption successful!
Encrypted file: document.pdf.encrypted
Decryption key: document.pdf.encrypted.key
python crypt-tick.py --interactiveThen follow the prompts:
- Select "2. Encrypt File"
- Enter file path:
secret.txt - Enter password:
mypassword - Select methods:
all(or specific methods) - Set layers:
4
The encrypted decryption key contains:
{
"key_metadata": {
"method": "AES-256-GCM",
"salt": "base64_encoded_salt",
"salt_length": 35,
"iv": "base64_encoded_iv",
"iv_length": 28,
"key_length": 32,
"timestamp": "2025-10-11T11:37:07.052704"
},
"encrypted_instructions": "encrypted_json_with_decryption_steps"
}The encrypted_instructions contains the full decryption recipe:
- Which methods were used
- In what order
- What salts were used
- All metadata needed for decryption
- Password Security: Choose strong, unique passwords
- Key Storage: Keep your decryption keys secure
- Backup: Always backup your encrypted data and keys
- Testing: Test decryption before deleting original files
- Method Selection: Use strong encryption methods for sensitive data
"Encryption method not available"
- Install cryptography:
pip install cryptography
"Decryption failed"
- Check password correctness
- Verify decryption key integrity
- Ensure all required methods are available
"File not found"
- Check file paths
- Ensure files exist and are readable
For verbose output, you can modify the script to add debug logging.
Contributions are welcome! Please feel free to submit:
- Bug reports
- Feature requests
- Code improvements
- Documentation updates
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Python's
cryptographylibrary - Uses
secretsmodule for secure random generation - Inspired by the concept of cryptographic onions
Made with ๐ by crypt-tick
Encrypting the world, one layer at a time
