Inspiration

Criminals are always trying to conceal their secrets, and detectives are always trying to uncover them. So, we thought: why not join both sides? Who's to say that we can't initiate an arms race with ourselves? Cybersecurity is a growing field, especially as the data we put on the wire becomes more and more valuable. As a team, we wanted to create a system that could provide both encryption and decryption to messages or passwords.

What it does

Our website provides both multi-layered encryption and decryption. For the encryption half, users can assemble a stack of algorithms, and drag and drop to rearrange. Upon entering their message and hitting "Encrypt", their message will be run through the selected algorithms from top to bottom.

For the decryption half, the user can enter an encrypted message and any keys known to them. They will then receive a list of possible decrypted messages, along with the neural network's confidence and the steps taken to unwrap each message.

How we built it

The website is composed of html, css, and javascript. We built our website on Replit, using their Node.js environment. The neural network was built using Tensorflow for Javascript, the repl of which can be found here (note that code is not as well documented).

Challenges we ran into

The encryption and decryption algorithms took considerably long to implement, as most algorithms required their own specific implementation. In addition, it was tedious to debug the program simply due to the quantity of functions and the unique steps for each one. Building the dataset for the neural network also came with its challenges, as the methods in which the data was augmented sometimes produced contradictory datapoints.

What we learned

We learned the many fundamentals of javascript, css, and html, along with setting up a server in Node.js. We also learned about many machine learning concepts, such as overfitting, augmenting datasets, etc.

What's Next

  • More algorithms
  • Fine tune neural network
  • Improved UX (preserving the state of pages when switching between them, error feedback, etc.)

Built With

Share this project:

Updates