This course covers advanced aspects of cryptography based on a formal and theoretical approach. Topics covered include: number theory concepts, Exponentiation methods, Chinese remainder theorem, Polynomials and finite fields, Factoring and generating prime numbers, primality testing, discrete logarithm, birthday problem, secure hash functions, attacks on hash functions, digital signature and their attacks, pseudorandom generators, and Zero-knowledge proofs.