For my second venture, I'm diving into the world of cryptography with an encryption program! ππ This program harnesses the power of OTP encryption (One-Time Pad Encryption) πβ¨. OTP is a formidable encryption technique that stands uncrackable π‘οΈ, but there's a catch! It demands a one-time pre-shared key π for the magic to happen.
The menu denoted in figure 1 presents four distinct options. To initiate the process, a new key must be generated. This key is derived using a substitution cypher that shuffles ASCII characters. Characters between 0 and 31 are excluded from the encryption program as are control characters. These characters are not printable symbols like letters, numbers, or punctuation marks.
In Figure 2, the program clearly displays the original ASCII sequence alongside its shuffled version and can be called at any time using the "Get Key" functionality.
For encryption, let's consider the example in Figure 3 with the input "Hello World!". The program employs a substitution cypher that relies on the previously generated key π. During the encryption process, the program replaces characters in the input message with corresponding characters from the key. This replacement is determined by the positions of the characters in the original ASCII sequence. The result is a transformed message that's as secure! π
During decryption, the process is reversed: characters from the encrypted message are matched with the key and then reverted to their original form. The key is central to both processes, ensuring that only someone with the correct key can accurately decrypt an encrypted message.
This being my second project, I've delved deeper into the intricacies of software development, especially with the inclusion of error handling to ensure a seamless user experience π οΈ. As I look to the future, I'm excited about the prospect of adding a graphical user interface (GUI) to make the tool even more user-friendly and interactive as I gain more experience. π₯οΈ Additionally, I aim to introduce features that enable users to save and retrieve encryption keys, facilitating decryption across different sessions or devices.