NOTE:
We were unable to iron out all the bugs in time, so this is a partial implementation. (code does not work)
Inspiration
Both team members have a background in mathematics, so we choose to do our project on Encryption. Encryption is a very wide field so we decided to focus on a standard: AES-256.
What it does
Our project takes in a file and key, Encrypts it, then returns the Encrypted file.
This file then can be decrypted using the very same key.
Usage:
Encrypt a file:
java -jar AES-256-FE.jar -e "target file" "output file" "password file.key"Decrypt a file:
java -jar AES-256-FE.jar -d "target file" "output file" "password file.key"
How we built it
The project is entirely written in java.
The algorithm used was based on that presented in
https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/aes-development/rijndael-ammended.pdf
Reference was taken from
https://blog.nindalf.com/posts/implementing-aes/
S_Box and Galois Multiplication Look-up table data was sourced from:
https://en.wikipedia.org/wiki/Rijndael_S-box
https://en.wikipedia.org/wiki/Rijndael_MixColumns#Galois_Multiplication_lookup_tables
Challenges we ran into
Getting the smaller systems to work together.
Accomplishments that we're proud of
How we managed to make so many smaller systems work together seamlessly to create one coherent project
What we learned
One major thing we learned was working with bits and bytes. We both have learned a lot about how to use different bitwise operations like OR XOR AND and Bitshift.
What's next for AES-256 File Encryption
If we were to keep working on this project we could test different variants of this encryption using larger keys, like 512-bit keys. We could also look at vulnerabilities and find solutions to those.
Log in or sign up for Devpost to join the conversation.