This is a simple cipher web application that features:
- Caesar Cipher
- Base64 Encoding/Decoding
This is done using flask and python, with a simple html frontend and a Caesar Cipher python script.
# Install the requirements
pip install -r requirements.txt
# Run the app
python app.pyAll current and future cipher files will be located in the Ciphers folder.
Web application files are located in root directory.
The Caesar Cipher is a simple cipher that shifts the alphabet by a certain amount. For example, if the shift is 3, then
A becomes D, B becomes E, and so on. This is done by using the ord() and chr() functions in python.
What's different about this Caesar Cipher portion is the ability to include a One Time Pad (OTP) in the form of a CSV
or TXT file. This fortifies the cipher by adding a predefined shift to the characters.
The OTP looks like this:
19 33 71 15 21 25 43 38 9 68 2 79 85 97 62 80 63 61 5 71 97 73 47 20 5 6 11 83 3 97 61 11 92 67 11 59 9 53 97 39 94 63 4 99 16 3 43 42 93 28 41 18 72 75 92 16 66 82 77 10 36 1 40 73 78 11 90 94 31 70 52 52 80 45 15 60 70 6 47 29 36 28 4 90 92 8 36 56 63 85 37 81 82 35 62 20 41 41 79 68
Where each number is a shift value for each character in the message.
The OTP will be generated and saved into both a CSV and TXT file if use_pad is set to True but no file_name
or file is provided. This is done with secrets instead of random to ensure that the OTP is cryptographically
secure.
Read more about
secretshere
# Import the class
from collections import deque
text = "Hello World, this is a test!"
# Pad Declaration using a list in a deque
pad = deque([19, 33, 71, 15, 21, 25, 43, 38, 9, 68, 2, 79, 85])
cipher = CaesarCipher(40, use_pad=False)
enc = cipher.encrypt(text)
decipher = CaesarCipher(40, use_pad=False)
dec = decipher.decrypt(enc)
cipher2 = CaesarCipher(40, use_pad=True, file_name='./pad.txt')
enc = cipher.encrypt(text)
decipher2 = CaesarCipher(40, use_pad=True, file_name='./pad.txt')
dec = decipher.decrypt(enc)The Constructor allows for multiple parameters:
shift- The shift value for the cipher (Default in the Web Application is 3, no default in the class)pad-dequeobject containing the OTP (Default isNone)file_name- The name of the file containing the OTP (Default isNone)file- The file containing the OTP (Default isNone)use_pad- Whether to use the OTP (Default isFalse)
Above is the sample usage of the class. The object will have to be recreated for each message to be encrypted/decrypted since the OTP is a one time use.
Base64 is a way to encode binary data into a string format. This is done by splitting the binary data into 6-bit chunks
and then converting each chunk into a character. This is done by using the base64 module in python.
The base64 encoding/decoding is done using the base64 module in the web application.
The web application is done using flask and python. The frontend is done using html and css.
This is a simple web application that allows the user to encrypt/decrypt messages using the Caesar Cipher and Base64 Encoding/Decoding.
Basic Functions:
- Fields are automatically updated as the user types in the message.
- The user can choose to use the OTP (via a file upload)
- Sliders can be used to change the shift value for the Caesar Cipher
- Both the Caesar Cipher and Base64 Encoding/Decoding can be used at the same time
To launch the web application, run the app.py file. This will launch the web application on localhost:5000.
python app.pyEnsure that the requirements in requirements.txt file is installed before running the application.