Project Requirments:
- Dividing the file to upload into N parts. (N depends on the file size)
- Generate m keys randomly, where m is the number of symmetric ciphers used (at least 3 ciphers including DES and AES, and you may choose a third one or even your own cipher)
- Encrypting all the parts of the file using one of the selected algorithms (Algorithm is changed with every part in round robin fashion). And the parts are put together in a single file as ordered.
- The keys for cryptography algorithms are then grouped in a key file and encrypted using a different algorithm and the key for this algorithm is also generated randomly and is called the file master key.
- The data file and the key file are than uploaded to the FTP server
- A copy of the master key is kept in a local file with the file name to be shared. This has to be done through a GUI APP with the entire process encapsulated in a single use-case that is “Secure Upload”.
- A user requesting the master key must provide his public key to the owner
- The owner then encrypts the master key of the requested file with the requesting user public key and sends it to him
- The user can then download the data file and the key file, decrypts the master key with his private key and then decrypts the data file Requesting the master key can be done outside your app, but the encrypted master key must be imported to the application of the file retriever and used to decrypt the file
There are 3 test cases to encrypt and decrypt 3 different text files (input(small-size file) , input2 (medium-size file) , input3 (large-size file)with different sizes and python file (min_temp_dataframe.py).