Cryptography in C and C++
Chapter 1: Introduction
- Table 1.1: Arithmetic and Number Theory in C in Directory flint/src
- Table 1.2: Arithmetic and Number Theory in C++ in Directory flint/src
- Table 1.3: Arithmetic Module in 80×86 Assembler (see Chapter 18) in Directory flint/src/asm
- Table 1.4: Arithmetic Libraries in 80×86 Assembler (see Chapter 18) in Directory flint/lib
- Table 1.5: Tests (see Section 12.2 and Chapter 17) in Directory flint/test
- Table 1.6: RSA Implementation (see Chapter 16) in Directory flint/rsa
Chapter 3: Interface Semantics
- Table 3.1: FLINT/C error codes
Chapter 5: Modular Arithmetic: Calculating with Residue Classes
- Table 5.1: Composition table for addition modulo 5
- Table 5.2: Composition table for multiplication modulo 5
Chapter 6: Where All Roads Meet: Modular Exponentiation
- Table 6.1: Requirements for exponentiation
- Table 6.2: Numbers of multiplications for typical sizes of exponents and various bases 2k
- Table 6.3: Values for the factorization of the exponent digits into products of a power of 2 and an odd factor
- Table 6.4: Numbers of multiplications for typical sizes of exponents and various bases 2k
- Table 6.5: Exponentiation functions in FLINT/C
Chapter 7: Bitwise and Logical Functions
- Table 7.1: Values of a Boolean function
- Table 7.2: Values of the CLINT function and_l()
- Table 7.3: Values of the CLINT function or_l()
- Table 7.4: Values of the CLINT function xor_l()
Chapter 8: Input, Output, Assignment, Conversion
- Table 8.1: Diagnostic values of the function vcheck_l()
Chapter 10: Basic Number-Theoretic Functions
- Table 10.1: The largest known primes (as of August 2000)
- Table 10.2: The number of primes up to various limits x
Chapter 12: Strategies for Testing LINT
- Table 12.1: Group law for the integers to help in testing
- Table 12.2: FLINT/C test functions
Chapter 13: Let C++ Simplify Your Life
- Table 13.1: LINT constructors
- Table 13.2: LINT arithmetic operators
- Table 13.3: LINT bitwise operators
- Table 13.4: LINT logical operators
- Table 13.5: LINT assignment operators
Chapter 14: The LINT Public Interface: Members and Friends
- Table 14.1: LINT status functions and their effects
- Table 14.2: LINT manipulators and their effects
- Table 14.3: LINT flags for output formatting and their effects
Chapter 15: Error Handling
- Table 15.1: LINT function error codes
Chapter 16: An Application Example: The RSA Cryptosystem
- Table 16.1: Recommended key lengths according to Lenstra and Verheul
Chapter 19: Rijndael: A Successor to the Data Encryption Standard
- Table 19.1: Elements of
- Table 19.2: Powers of g(x) = x + 1
- Table 19.3: Logarithms to base g(x) = x + 1 (e.g., logg(x) 3 = 25, logg(x) 255 = 7)
- Table 19.4: Number of Rijndael rounds as a function of block and key length
- Table 19.5: Representation of message blocks
- Table 19.6: rc(j) constants (hexadecimal)
- Table 19.7: rc(j) constants (binary)
- Table 19.8: Representation of the round keys
- Table 19.9: The values of the S-box
- Table 19.10: The values of the inverted S-box
- Table 19.11: ShiftRow for blocks of length 128 bits (Lb = 4)
- Table 19.12: ShiftRow for blocks of length 192 bits (Lb = 6)
- Table 19.13: ShiftRow for blocks of length 256 bits (Lb = 8)
- Table 19.14: Distances of line rotations in ShiftRow
- Table 19.15: Interpretation of variables
- Table 19.16: Interpretation of fields
- Table 19.17: Interpretation of functions
Appendix D: Calculation Times
- Table D.1: Calculation times for several C functions (without assembler support)
- Table D.2: Calculation times for several C functions (with 80×86 assembler support)
- Table D.3: Calculation times for several GMP functions (with 80×86 assembler support)