Cryptography Projects

Symmetric Cryptosystem

This project needs a more interesting name, but it is a pretty neat symmetric cryptosystem that was imagined as an amalgamation of Skipjack and Twofish. This system features a Feistel structure with key whitening, a key schedule, and several subroutines including permutation which increase confusion/diffusion. Two different versions of this program support 64-bit and 80-bit keys, respectively. On the right is part of a proof showing the symmetry of Feistel structures.

subroutine
feistel_proof

Asymmetric Elgamal

This cryptoscheme implements asymmetric encryption with public and private keys using, among other things, the Miller-Rabin primality test, square multiply, and modular exponentiaton.

Miller-Rabin code

Elliptic Curve Cryptography Lecture

This was not a programming project, but I prepared and taught a graduate lecture on elliptic curve cryptography, discussing the form of the curve, the mathematics behind ECC, Diffie-Hellman ECC key exchange and the discrete logarithm problem, and some proofs regarding the analytical formulae used in devices to compute the elliptic curve group math.

ecc-graph

Post-Quantum Cryptography

This was a research project completed by three students for a quantum computing class. This paper examines some of the proposed solutions to creating safe cryptosystems once/if quantum computing takes over. The image on the right is from our group presentation regarding lattice-based crypto using an illustration of one reduction shown by researchers.

dihedral hidden subgroup

In addition to the projects above, I have also written a couple programs which decrypt Caesar and Vigenere ciphers.