1. Preface
  2. 1. Introduction
    1. 1.1. Kerckhoff's Principle
    2. 1.2. Symmetric encryption
    3. 1.3. Secret sharing
    4. 1.4. Asymmetric encryption
    5. 1.5. P versus NP problem
    6. 1.6. Trapdoor and one way functions
    7. 1.7. Randomness
    8. 1.8. Hashes and Random Oracle
    9. 1.9. Zero Knowledge Proofs
    10. 1.10. Fully Homomorphic Encryption
    11. 1.11. Secure Multi-Party Computation
  3. 2. Building Blocks
    1. 2.1. XOR and one-time pads
    2. 2.2. Natural Numbers
    3. 2.3. Integers
    4. 2.4. Divisibility and greatest common divisors
    5. 2.5. Modular arithmetic and congruences
    6. 2.6. Groups
    7. 2.7. Rings
    8. 2.8. Fields
    9. 2.9. Fermat's little theorem and Euler, Cauchy and Lagrange theorems
    10. 2.10. Discrete logarithm
    11. 2.11. Primitive roots
    12. 2.12. Polynomials
    13. 2.13. Polynomial interpolation
    14. 2.14. The Arithmetic of Elliptic Curves
    15. 2.15. Pairings and field extensions
    16. 2.16. Lattices
    17. 2.17. Ring learning with errors
  4. 3. Secret sharing
    1. 3.1. Diffie–Hellman key exchange
    2. 3.2. Elliptic Curves Diffie Helman
    3. 3.3. ElGamal
  5. 4. Symmetric encryption
    1. 4.1. Information vs Computational Security
    2. 4.2. Bit Operations
    3. 4.3. Stream and block ciphers
    4. 4.4. AES
    5. 4.5. ChaCha20 and XChaCha20
    6. 4.6. MiMC
    7. 4.7. Rescue and Vision
  6. 5. Asymmetric encryption
    1. 5.1. Primality Testing
    2. 5.2. RSA
    3. 5.3. Fast Multiplication Algorithms
    4. 5.4. Elliptic Curves
    5. 5.5. The discrete logarithm problem
  7. 6. Hash functions
    1. 6.1. Merkle Tree
    2. 6.2. BLAKE2b
    3. 6.3. Pedersen
    4. 6.4. Poseidon
  8. 7. Pseudorandom number generators
  9. 8. Signatures
    1. 8.1. Schnorr
    2. 8.2. MuSig
  10. 9. Message Authentication Codes
    1. 9.1. Poly1305
  11. 10. SNARKs
    1. 10.1. Overview
    2. 10.2. Arithmetization
    3. 10.3. Probabilistically Checkable Proof
    4. 10.4. Interactive oracle proof
    5. 10.5. Polynomial commitments
    6. 10.6. Multiscalar Multiplication
    7. 10.7. Groth16
    8. 10.8. Plonk
  12. 11. STARKs
    1. 11.1. AIR
  13. 12. Fully Homomorphic Encryption
  14. 13. Secure Multi-Party Computation

Cryptography in Rust for Hackers

RSA