What it does

CipherIt is an encryption program that provides the user with four main options - encrypting a string of text the user inputs, decrypting a string of text the user inputs, encrypting an image, and decrypting an image. We coined the term "Pyctography" to describe the latter two options, and this is reflected within our program.

Encrypting and Decrypting Text: In its current state, CipherIt offers Caesar, Atbash, Vigenere, and Numeric encryption methods when encrypting and decrypting strings of text. While the Caesar and Atbash ciphers function perfectly, we didn't have enough time to resolve a couple small issues with the Vigenere and Numeric ciphers.

The Vigenere cipher cannot deal with special characters and can only resolve uppercase letters by forcing the string to lowercase. This results in a lowercase string being output, which is a band-aid solution for compatibility.

Pyctography(Pic-Cryptography): The purpose of this is to visually describe different methods of encrypting images. There is a button to choose an image file for it to then be displayed and the user will decide wheter to encrypt or decrypt the image. The methods worked originally with a Java Applet API and the use of random. The images were split into even powers that the user could adjust with a slider. We then started converting the Applet based API over into a newer, supported JavaFX. It was the most challenging, but satisfying thing to learn about during this project. That was what inspired the "learn-with-me" interaction with the user.

How we built it

We used IntelliJ IDEA with Java, Gradle, and JavaFX. We entered with minimal knowledge of JavaFX, but left feeling like experts!

Challenges we ran into

Out biggest challenge was the "Pyctography" encryption system. We'd managed a more traditional form of encryption with a DES cipher, but wanted to challenge ourselves further by creating a pixel-scramble form of encryption. As a proof of concept we managed to distort a given image, and further the process by creating a variable quadrant slide in a separate program. Time was against us, however, and we were forced to submit before implementing the working encrypt/decrypt quadrant slide and rounding out or pixel by pixel encryption/decryption. In the future, we would like to explore more photo encryption methods for the user to be able to see how they each interact with the data differently.

Accomplishments that we're proud of

We're proud of the final version of the software that came together. Of course, we had highs and lows when developing it so being able to see a presentable product made it all worth it. In particular, getting the file upload and text encryption methods working felt like a huge undertaking. However, once we saw them working properly, we felt incredibly proud of what we accomplished!

What we learned

We learned a lot from the experience! We learned plenty about JavaFX, using Github in a team, and project management. For our first hackathon, we feel that we did an awesome job! Our team was always ready to put our heads together to help one another out. We didn't have any issues with teamwork or slacking team members, which was awesome!

What's next for CipherIt?

We'll finish the Pyctography function of the program, add more encryption methods, and add extra options to the software as we progress in our majors. In its final form, we also plan to make the log function of the UI a tool for education, detailing how the encryption and decryption processes work.

Share this project:


posted an update

Run -> Edit Configurations -> VM configurations -> paste the text below replacing the PathToYourJavaFXSDK with the path to your JavaFX SDK. You can find this through Windows Explorer (the folder icon). (no C: and forward slashes on a Mac)

--module-path "C:\PathToYourJavaFXSDK\lib" --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.media,javafx.graphics,javafx.swing,javafx.web

Log in or sign up for Devpost to join the conversation.