# 20580 Introduction to Cryptography

**Credits: **4 advanced credits in Computer Science

**Prerequisites**: Students must fulfill all **English** requirements and take **bibliographic instruction** in the Library.

Required: Linear Algebra I, Probability for Computer Science Students, Introduction to Computer Science Using Java 1

Recommended: Data Structures and Introduction to Algorithms, Introduction to the Theory of Computation and Complexity, Discrete Mathematics: Set Theory, Combinatorics and Graph Theory2

The course is based on *Cryptography: Theory and Practice* (3rd ed.), by D.R. Stinson (Chapman & Hall, 2006).

Cryptography is the science of data security. By data security, we mean not only encryption and decryption but also issues of authentication, identification, data integrity, secret sharing, data hiding and many more aspects of securing the transmission and processing of data.

The course covers the basics of cryptography: Classical cryptographic methods, Shannon's theory of secrecy, modern symmetric methods (focusing on DES, 3-DES and AES), modes of operation of symmetric methods, message authentication codes, hash functions, public key cryptography – encryption methods (RSA, Rabin and El-Gamal), Diffie-Hellman protocol, digital signatures (El-Gamal, Schnorr, DSA and Rabin), and secret sharing schemes.

1or both **Introduction to Computer Science Using Java I** (20453) and** Introduction to Computer Science Using Java II **(20454).

2or **Discrete Mathematics: Set Theory, Combinatorics and Logic** (20283), which is no longer offered.