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:

  1. Encrypt a file:

    java -jar AES-256-FE.jar -e "target file" "output file" "password file.key"
    
  2. 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.

Built With

Share this project:

Updates

Submission history