=>To achieve the above goal, the following methodology needs to be followed:
- Load the file on the server.
- Dividing the uploaded file into N part of size 32Kb and max size of file that you can upload is of 1MB.
- We use 5 cryptography algo Fernet ,ChaCha20Poly1305,AESGCM,AESCCM,MultiFernet for generating key
- we generate 6 key and 2 nonce and 5 keys and 2 nonce are used for Encrypting and decrypting the file and the one key used for Encrypting and decrypting the all other keys .
- Key which used for Encrypting other keys is given to user as public key .
- Encrypting all the parts of the file using any one of the selected algorithms (Algorithm is changed with every part in round robin fashion)
- The keys for cryptography algorithms is then secured using a different algorithm and the key for this algorithm is provided to the user as public key.
After the above 7 steps you will have a N files which are in encrypted form which are stored on the server and a key which is downloaded as public key for decrypting the file and downloading it.
=>To restore the file, follow the following steps:
- Load the key on the server.
- Decrypt the keys of the algorithms.
- Decrypt all the N parts of the file using the same algorithms which were used to encrypt them.
- Combine all the N parts to form the original file and provide it to the user for downloading.
NOTE: The project is based on Python 2.7.15 plateform running it on any other plateform might create some issues.
Step 1: Install Requirements
pip install -r requirements.txt
Step 2: Run the application
python app.py
Step 3: Visit the localhost:8000 from your browser
Step 4: Enjoy :)
THE PROJECT HAS ENCOUNTERED A BUG BECAUSE OF THE CRYPTOGRAPHY LIBRARY version. IF YOU ARE INTRESTED IN COLLABORATING TO IMPROVE THIS PROJECT FEEL FREE TO CONTACT ME : pranjalchoudhary270@gmail.com if use python 2.7.15 it will work