CipherBox is a secure file encryption system that uses RSA and AES hybrid encryption to protect your files. Built with Python and Streamlit, it provides a user-friendly interface for file encryption and decryption while maintaining high security standards.
- Hybrid encryption (RSA + AES) for optimal security and performance
- Unique encryption keys for each user
- Secure password hashing with salt
- Protected private keys
- Session-based authentication
- Support for all file types
- File size limit: 10MB (configurable)
- Encrypted file tracking
- Secure file storage
- Multi-user support
- User registration and authentication
- File encryption with personal keys
- File decryption for authorized users
- File history tracking
- Data clearing option
- Python 3.8 or higher
- pip (Python package manager)
- Clone the repository:
git clone https://github.com/clueNA/cipherbox.git
cd cipherbox
- Install required packages:
pip install -r requirements.txt
- Initialize the database:
python create_database.py
- Run the application:
streamlit run app.py
-
Registration
- Click the "Register" tab
- Enter username and password
- System generates encryption keys automatically
-
Login
- Use the "Login" tab
- Enter credentials
- Access your encrypted files
- Select "Encrypt File" tab
- Upload file (up to 100MB)
- Click "Encrypt"
- Download encrypted file (*.encrypted)
- Select "Decrypt File" tab
- Upload encrypted file (*.encrypted)
- Click "Decrypt"
- Download original file
- View all encrypted files in "File List" tab
- Track encryption dates
- Manage file access
# Encryption Process
- RSA 2048-bit key pair generation
- AES-256 for file encryption
- PBKDF2 for password hashing
- Secure random salt generation
-
Users Table
- Username
- Password hash
- Public/Private keys
- Salt
-
FileKeys Table
- Filename
- File hash
- Encrypted key
- Owner reference
- Documents (.pdf, .doc, .txt, etc.)
- Images (.jpg, .png, .gif, etc.)
- Media files (.mp3, .mp4, etc.)
- Archives (.zip, .rar, etc.)
- Any other file type
- Default: 100MB
- Configurable in config.py
- Keep encrypted files backed up
- Store passwords securely
- Don't share private keys
- Log out after usage
- Regular password updates
- Files encrypted with personal keys
- Only file owner can decrypt
- Secure key storage
- Protected user sessions
-
Registration Fails
- Check username availability
- Ensure password meets requirements
-
Encryption Fails
- Verify file size limits
- Check file permissions
-
Decryption Fails
- Confirm file ownership
- Verify correct user login
- Check file integrity
- Fork the repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
Apache-2.0 license - See LICENSE file for details
- GitHub Issues: Create Issue
- Streamlit for the web interface
- cryptography.io for encryption
- SQLAlchemy for database management