A simple web app that lets users upload and download files securely. Every file is AES-256 encrypted before being saved and decrypted when downloaded — keeping your data safe at rest.
A walkthrough video of the app is included in this repo.
NOTE: This video will not play on github as it is a big file. If you need to see that please proceed after downloading it first.
- AES-256 encryption for secure file storage.
- Flask backend with upload and download functionality.
- Web-based interface using HTML forms with Dark and Light theme toggle switch.
- Encryption done using PyCryptodome.
- Key is stored in a separate
key.binfile (not to store in code repo). - Basic error handling for missing files or bad requests.
-
Clone the repository
git clone https://github.com/kumar1607/FUTURE_CS_O3.gitcd FUTURE_CS_03
-
Installation of python
- Download Python
- Go to python.org/downloads
- Click “Download Python 3.x.x”
- Install Python
- Run the installer
- Check “Add Python to PATH”
- Click “Install Now”
- Verify Installation
- Open Command Prompt
- Run:
python --version - Run:
pip --version
- Download Python
-
Install required packages
- :
pip install flask pycryptodome
- :
-
Generate the AES encryption key
- Run:
python generate_key.py - This creates a
key.binfile — keep it safe and never share it.
- Run:
-
Create folders if missing
mkdir storagemkdir templates
-
Start the Flask app
python app.py- App will run at: http://localhost:5000
- Go to
/uploadto select and upload a file - Go to
/downloadto retrieve a file by name (Make sure the name consist the extension of the required file too). - Encrypted files are saved in the
storage/folder with a.encextension.
- The
key.binfile is critical for encryption/decryption and must be kept private. - There’s no login system — use only in trusted environments or for learning purposes.
- HTTPS is not set up by default — use SSL for secure file transfer in production.
- Temporary decrypted files may remain — improve cleanup in future updates.
- Python
- Flask
- PyCryptodome