Содержание
Предисловие к русскому изданию
Предисловие ко второму изданию
Предисловие к первому изданию
ЧАСТЬ I.
АРИФМЕТИКА И ТЕОРИЯ ЧИСЕЛ НА C
ГЛАВА 1.
Введение
1.1. О программном обеспечении
1.2. Законные условия использования программного обеспечения
1.3. Как связаться с автором
ГЛАВА 2.
Числовые форматы: представление больших чисел в языке С
ГЛАВА 3.
Семантика интерфейса
ГЛАВА 4.
Основные операции
4.1. Сложение и вычитание
4.2. Умножение
4.2.1. Школьный метод
4.2.2. А возведение в квадрат – быстрее
4.2.3. Поможет ли метод Карацубы?
4.3. Деление с остатком
ГЛАВА 5.
Модульная арифметика: вычисление в классах вычетов
ГЛАВА 6.
Все дороги ведут к… модульному возведению в степень
6.1. Первые шаги
6.2. M-арное возведение в степень
6.3. Аддитивные цепочки и окна
6.4. Приведение по модулю и возведение в степень методом Монтгомери
6.5. Криптографические приложения модульного возведения в степень
ГЛАВА 7.
Поразрядные и логические функции
7.1. Операции сдвига
7.2. Все или ничего: битовые соотношения
7.3. Прямой доступ к отдельным двоичным разрядам
7.4. Операции сравнения
ГЛАВА 8.
Операции ввода, вывода, присваивания и преобразования
ГЛАВА 9.
Динамические регистры
ГЛАВА 10.
Основные теоретико-числовые функции
10.1. Наибольший общий делитель
10.2. Обращение в кольце классов вычетов
10.3. Корни и логарифмы
10.4. Квадратные корни в кольце классов вычетов
10.4.1. Символ Якоби
10.4.2. Квадратные корни по модулю pk
10.4.3. Квадратные корни по модулю n
10.4.4. Квадратичные вычеты в криптографии
10.5. Проверка на простоту
ГЛАВА 11.
Большие случайные числа
ГЛАВА 12.
Стратегия тестирования LINT
12.1. Статический анализ
12.2. Динамические тесты
ЧАСТЬ II.
КЛАСС LINT: АРИФМЕТИКА НА С++
ГЛАВА 13.
Пусть С++ облегчит Вашу жизнь
13.1. Частное дело: представление чисел в классе LINT
13.2. Конструкторы
13.3. Перегрузка операторов
ГЛАВА 14.
Открытый интерфейс LINT: члены и друзья класса
14.1. Арифметика
14.2. Теория чисел
14.3. Потоковый ввод/вывод объектов LINT
14.3.1. Форматированный вывод объектов LINT
14.3.2. Манипуляторы
14.3.3. Файловый ввод/вывод для объектов LINT
ГЛАВА 15.
Обработка ошибок
15.1. (Без) Паники …
15.2. Обработка ошибок, определяемая пользователем
15.3. Исключения LINT
ГЛАВА 16.
Практический пример: криптосистема RSA
16.1. Асимметричные криптосистемы
16.2. Алгоритм RSA
16.3. Цифровая подпись RSA
16.4. RSA-классы на C++
ГЛАВА 17.
Сделайте это сами: протестируйте LINT
ГЛАВА 18.
Направления дальнейших исследований
ГЛАВА 19.
Rijndael: наследник стандарта шифрования данных
19.1. Полиномиальная арифметика
19.2. Алгоритм Rijndael
19.3. Вычисление ключа раунда
19.4. S-блок
19.5. Преобразование ShiftRow
19.6. Преобразование MixColumn
19.7. Сложение с ключом раунда
19.8. Полная процедура зашифрования блока
19.9. Расшифрование
ЧАСТЬ III.
ПРИЛОЖЕНИЯ
Приложение A.
Каталог функций на C
А.1 Ввод/вывод, присваивание, преобразования, сравнения
А.2 Основные арифметические операции
А.3 Модульная арифметика
А.4 Битовые операции
А.5 Теоретико-числовые функции
А.6 Генерация псевдослучайных чисел
А.7 Управление регистрами
Приложение B.
Каталог функций C++
B.1 Ввод/вывод, преобразования, сравнения: функции-члены класса
B.2 Ввод/вывод, преобразования, сравнения: функции-друзья класса
B.3 Основные операции: функции-члены класса
B.4 Основные операции: функции-друзья класса
B.5 Модульная арифметика: функции-члены класса
B.6 Модульная арифметика: функции-друзья класса
B.7 Битовые операции: функции-члены класса
B.8 Битовые операции: функции-друзья класса
B.9 Теоретико-числовые функции-члены класса
B.10 Теоретико-числовые функции-друзья класса
B.11 Генерация псевдослучайных чисел
B.12 Прочие функции
Приложение C.
Макросы
C.1 Коды ошибок и значения состояний
C.2 Дополнительные константы
C.3 Макросы с параметрами
Приложение D.
Время вычислений
Приложение E.
Условные обозначения
Приложение F.
Арифметические и теоретико-числовые пакеты
Литература
Об авторе