/tcss-487a-crypto-project

A Java implementation of asymmetric encryption and digital signatures at the 256-bit security level.

Primary LanguageJava

Cryptography class project

This project contains a Java terminal application for asymmetric encryption and digital signatures at the 256-bit security level.

This is achieved via implementation of the SHA-3 derived KMACXOF256 primitive (and supporting functions bytepad, encode_string, left_encode, right_encode, and the Keccak core algorithm itself) as specified in NIST Special Publication 800-185 (https://dx.doi.org/10.6028/NIST.SP.800-185)

The application contains the following capabilities:

  • Compute a plain cryptographic hash of a file or console input
  • Compute a MAC of a file or console input under a supplied passphrase
  • Encrypt/Decrypt a file symmetrically under a supplied passphrase
  • Elliptic key pair generation via a supplied passphrase
  • Encrypt/Decrypt a file or console input under a supplied elliptic public key file
  • Elliptic file decryption via supplied password
  • Sign a file or console input via supplied password

Compiles via:

javac Main.java

Runs via:

java Main

(Tested on Windows 10/11 and Ubuntu 22.04.3 LTS via WSL)