Computer Science 321.01


Spring 2020



            Professor Tom Valente


            Bagby 123

            Office Hours:  MWR 2:30PM-4:00 PM   


Meeting Times:         

MWF 1:30PM – 2:20PM in Morton 325



Cryptpology Unlocked   by David Wayne Bishop


Course Description:


Cryptography is the study of the design and implementation of systems for enciphering secret messages.  A message is encrypted or “enciphered” using a “cipher”, which is a scheme for replacing “plain text” with “cipher text”.  Naturally, a means must exist for the intended recipient to decipher or “decrypt” the cipher text.  It should be that the algorithms for encryption and decryption must both be fast in the presence of a so-called “key”.  It should also be the case that decryption without the so-called key is computationally difficult, if not unfeasible.


            A great deal of mathematics is required for the design of cryptographic systems, much of it from the field known as number theory, though fields such as abstract algebra and linear algebra often play a role as well.  Thus, we will hope to learn a fair amount of mathematics in order to appreciate both the design of cryptographic systems and also whether or not such systems are vulnerable to attack by “cryptanalysis”.


            Our tour of cryptographic systems will be, in part, historical.  We’ll want to know about a system used by Julius Caesar roughly 2000 years ago, and the kinds of systems that were used throughout the centuries leading up to the 20th Century.  We’ll want to know about the more sophisticated systems used during World War II, when, for the first time, computers were involved in code breaking.  Finally, we’ll want to know about how classical number theory results by Fermat and Euler from the 18th century have contributed, only since the 1970’s,  to schemes for both “private key” and  “public key cryptography”, and how these schemes play a role in today’s secure communications.





  1. Gain an appreciation of classical cryptography and the (discrete) mathematics that is involved.
  2. Learn enough Number Theory to understand modern cryptographic systems and why they are secure.
  3. Gain exposure to Java programming and its BigInteger class.
  4. Know the complexity of various important algorithms that are important in the study of modern cryptography.
  5. Have lots of fun doing homework and other things (see below).


The Plan:


            Weeks Of                               Topic                                      Textbook Chapter    

1/13, 1/20                    A History of Cryptography                             1

                                    through World War I


1/27    Code breaking during World War II (various media)


2/3    The complexity of some simple “big integer” algorithms,    

                     motivated by the author’s “big integer” class, and an               2

                     introduction to  Java’s BigInteger class.


                     Properties of Integers                                                                 3


            2/10                             LDEs and Linear Congruences                       4

            2/17                             Linear Ciphers                                                5

            2/24                             The Chinese Remainder Theorem                  8


            3/2                               Quadratic Congruences                                   9


            3/16                             Quadratic Ciphers (introduce Mca)               10

Exam (March 20tht)


            3/23                             Primality Testing                                            11

            3/30                             Factorization Techniques                                12

            4/6                               Exponential Congruences                               13

                                                Exponential Ciphers,                                      

            4/13, 4/20                    RSA and its Weaknesses;                               14

                                                Key Exchanging and Digital Signatures                                                                    



            Homework (textbook exercises and programming)    45%

            Quizzes (probably 3 or 4, all prior to March 21st)      10%

            One semester exam (March 21st)                                15%

            Take-home Final Exam                                              30%


Home Grown Web Pages

            Caesar Cipher (random shift)

            Caesar Cipher (blocks)

            A general monoalphabetic substitution cipher

            Experiment with Linear Ciphers

            Vigenere Cipher and le Tableau

            The naive way to do GCD

            This site is for quick encoding of letters with 2-digit replacements.

            Modular exponentiation in the small.


Other Links  

            The Java API

            Crack this!

            Simon Singh's Web Site

The German LORENZ Cipher

Videos about the German ENIGMA machine

            The Enigma and the Bombe

            Tony Sale's Codes and Ciphers Page