May-04: Some of you have found that you are able to find a key that allows you to encrypt and decrypt for yourself the known pair of files, producing exactly the same results as what you downloaded. Unfortunately, for reasons that are unclear to me, and for which I don't have time to delve into the problem, that same key (or, particularly, its inverse) does not decrypt the unknown ciphertext.
Apr-28: And at long last, the Project 3 files are fixed. Down them anew if you had grabbed the old ones. They not only have the debugging code removed, but they also used a consistent key. Yep, the old ones had different keys for the known and unknown plaintext files. That would have been a frustrating mess! Phew.
Apr-27: Thanks to Romey Sklar, who pointed out that the files for the Hill cipher project are a bit messed up. They contain some debugging output and such, and so I must fix that and repost the ZIP archives for each of you. Watch for an update later today with an indication that the new files are ready for you. Sorry about that.
Apr-25: Project 3, cracking the Hill cipher, is posted! Enjoy your matrix inversions! (And yes, I've set up submissions for this assignment.)
Also, check out the Documents page to grab my notes on linear and differential cryptanalysis, which are used to cryptanalyze substitution-permutation networks.
Apr-17: One of your fellow students, Sophia Gu, kindly provided me a better way to find a multiplicative inverse for some value a in the closed field of n integers 0 to n-1. To find such an a^{-1} where aa^{-1} = 1, I suggested a brute force search of the allowable values. However, you may also use the greatest common denominator (gcd) to discover whether such an inverse exists. Specifically, a^{-1} exists iff gcd(a, n) = 1 -- that is, a and a^{-1} are relatively prime.
If you want proof or more explanation, grab a copy of Construction of The Finite Fields Z_{n} and see Theorem A.14 on page 6 and Definition A.15 on page 7. Happy reading!