Preface Chapter 1 Basic theory of integers and finite fields 1.1 Integers 1.1.1 Size of an integer 1.1.2 Division with remainder 1.1.3 Euclidean Algorithm 1.1.4 Congruent theory 1.1.5 Chinese Remainder Theorem in general setting 1.2 Polynomials over a field 1.2.1 Degree of a polynomial 1.2.2 Division with remainder 1.2.3 Congruent theory 1.2.4 Multiplicity of roots 1.3 Finite fields 1.3.1 Main theorem 1.3.2 Applications Exercise Part 1 Coding Theory Chapter 2 Introduction to Error Correcting Codes 2.1 What is an Error Correcting Code? 2.1.1 Background 2.1.2 Definitions 2.1.3 Decoding rules 2.1.4 Equivalence of codes 2.1.5 Construction new codes from old ones 2.2 Bounds of codes 2.2.1 Trivial bounds 2.2.2 Sphere-packing and sphere-covering bounds 2.2.3 Singleton bound 2.2.4 Plotkin bound Exercise Chapter 3 Basic theory of linear codes 3.1 Introduction 3.1.1 Linear code and its dual code 3.1.2 Hamming weight 3.1.3 Construction new linear codes from old ones 3.2 Generator and parity check matrices 3.3 Hamming codes 3.3.1 Binary Hamming codes 3.3.2 Extended Hamming codes 3.3.3 Walsh-Hadamard Code 3.4 Encoding and decoding algorithms for linear codes 3.4.1 Encoding messages into a linear code 3.4.2 General decoding algorithms 3.5 Optimal linear codes 3.5.1 Bound for linear codes 3.5.2 MDS codes 3.5.3 Gilbert-Varshamov bound for linear codes 3.5.4 Golay codes 3.5.5 Reed-Solomon codes
3.6 Reed-Muller codes 3.6.1 Reed-Muller code of first degree 3.6.2 Boolean functions of m variables 3.6.3 General binary Reed-Muller codes 3.6.4 Revisiting the code R(1,m) 3.7 Weight enumerators and the MacWilliams theorem 3.7.1 The MacWilliams identity 3.7.2 Applications Chapter 4 Sequences over finite fields 4.1 Sequences and power series over finite fields 4.1.1 Periodic sequences 4.1.2 Decompose rational fractions 4.1.3 Relation with the trace map 4.2 Linear Feedback Shift Registers 4.3 The Berlekamp-Massey algorithm Chapter 5 More classes of linear codes 5.1 Cyclic codes 5.1.1 The chain ring Rm and its ideals 5.1.2 Definitions and basic properties 5.1.3 Examples of cyclic codes 5.1.4 Trace form of cyclic codes 5.1.5 Roots and new parity check matrices 5.2 The BCH codes 5.2.1 Definition and basic properties 5.2.2 Study of a BCH code 5.2.3 Decoding BCH codes 5.2.4 More examples of BCH codes 5.3 The Goppa codes 5.3.1 Family of asymptotically good codes 5.3.2 Definitions and properties 5.4 Generalized Reed-Solomon codes 5.4.1 Definitions and basic properties 5.4.2 Decoding GRS codes Part 2 Cryptography Chapter 6 An introduction to Cryptography 6.1 What is Cryptography? 6.1.1 Cryptography basic 6.1.2 Symmetric key cryptography 6.1.3 Asymmetric key cryptography 6.1.4 Cryptanalysis attacks 6.2 Cryptography in the history 6.2.1 Caesar cipher 6.2.2 Vigen?re cipher 6.2.3 Autokey cipher 6.3 RSA and DLP 6.3.1 Trapdoor function and one-way function 6.3.2 Factoring and RSA 6.3.3 DLP and DHP 6.4 Hash functions 6.4.1 Definition and basic properties
6.4.2 Merkle-Damg?rd Construction 6.4.3 Families of Hash functions 6.4.4 Message Authentication Codes Chapter 7 Algorithms for primality testing,factoring and discrete logarithms 7.1 Primality test 7.1.1 Trivial division 7.1.2 Fermat's primality test 7.1.3 Miller-Rabin Test 7.1.4 Primality proofs 7.2 Factoring algorithms 7.2.1 Overview of factoring algorithms 7.2.2 Pollard's p-1 method 7.2.3 Strategy of modern factoring methods 7.2.4 Linear Sieve 7.2.5 Number field sieve 7.3 Algorithms for DLP 7.3.1 Pohlig-Hellman algorithm 7.3.2 Baby-Step Giant-Step method 7.3.3 Pollard's λ and ρ methods 7.3.4 Modern methods for DLP over finite fields Chapter 8 Public Key Cryptography 8.1 Encryption algorithms 8.1.1 RSA cryptosystem 8.1.2 Rabin cryptosystem 8.1.3 Paillier cryptosystem 8.1.4 ElGamal cryptosystem (Finite field version) 8.2 Public key exchange 8.2.1 Diffie-Hellman Key Exchange 8.2.2 MQV protocol 8.3 Signature schemes 8.3.1 Requirement for public key signature 8.3.2 RSA signature algorithm 8.3.3 Digital Signature Algorithm 8.3.4 Schnorr signatures 8.3.5 Authenticated Key Agreement Chapter 9 Elliptic Curve Cryptography 9.1 Elliptic curves over general fields 9.1.1 Definition 9.1.2 Group law 9.1.3 Multiplication by n 9.2 Elliptic curves over finite fields 9.2.1 Basic properties 9.2.2 Addition using projective coordinates 9.2.3 Point compression 9.2.4 Schoof's algorithm 9.3 Attacks on ECDLP and ECDLP-based algorithms 9.3.1 Attacks on ECDLP 9.3.2 Cryptographic algorithms 9.4 Elliptic curve methods for primality test and factorization 9.4.1 Elliptic curve primality test
9.4.2 Elliptic curve method for factorization Chapter 10 Symmetric ciphers 10.1 Stream cipher 10.1.1 Linear Feedback Shift Register 10.1.2 Combining LFSRs 10.2 Block cipher 10.2.1 Feistel cipher 10.2.2 DES 10.2.3 AES (Rijndael) Bibliography Index