Есть две программы: программа-установщик(installer) и основная программа(main). При запуске основной программы без предварительного запуска установщика будет выведена ошибка, т.к. произойдет несовпадение уникального значения, привязанного к железу, полученного в основной программе и прочитанного из файла(license), при запуске установщика перед основной программой в файл license ключ(в данном случае серийный номер компьютера) записывается в этот файл.
Энигма: в машине "Энигма" 3 ротора(rotate - повернуть) и 1 рефлектор (reflect - отразить). Каждому символу, приходящему на ротор, сопоставлен другой символ symbolIn -> symbolOut (символы сопоставлены таким образом: , ...) . Пройдя через один ротор, полученный символ проходит через другой ротор и меняется аналогичным образом. Так через каждый ротор. Цепь замыкается на рефлекторе. В рефлекторе символы сопоставлены таким образом: , .... После прохождения одного символа, поворачивается первый ротор на 1 деление, если он сделал полный поворот, то на одно деление поворачивается второй ротор, аналогично с третьим ротором, когда второй сделал полный поворот, на 1 деление поворачивается третий.
AES
AES – блочный шифр с длиной блоков равной 128 битам, и шифр поддерживает ключи длиной Nk, равной 128, 192 или 256 бит. Алгоритм имеет четыре трансформации, каждая из которых своим образом влияет на состояние State и в конечном итоге приводит к результату: SubBytes(), ShiftRows(), MixColumns() и AddRoundKey().
RSA
- выбрать два больших простых числа p и q;
- вычислить: n = p ⋅ q, m = (p – 1) ⋅ (q – 1);
- выбрать случайное число d, взаимно простое с m;
- определить такое число e, для которого является истинным выражение: (e ⋅ d) mod (m) = 1;
- числа e и n – это открытый ключ, а числа d и n – это закрытый ключ;
Электронная подпись
Алгоритм подписания (секретный ключ):
- вычисление хеш-функции(данных) H1;
- шифрование с открытым ключом (секретный ключ, чтобы никто не мог подделать подпись).
Проверка подписи (данные, подпись, открытый ключ):
- вычисление хеш-функции(данных) H2;
- расшифровка подписи с открытым ключом H1;
- сравнение H1 и H2.
Алгоритм арифметического сжатия
На вход алгоритму передаются текст для кодирования и список частот встречаемости символов.
-
Рассмотрим отрезок [0;1) на координатной прямой.
-
Поставим каждому символу текста в соответствие отрезок, длина которого равна частоте его появления.
-
Считаем символ из входного потока и рассмотрим отрезок, соответствующий этому символу. Разделим этот отрезок на части, пропорциональные частотам встречаемости символов.
-
Повторим пункт (3) до конца входного потока.
-
Выберем любое число из получившегося отрезка, которое и будет результатом арифметического кодирования.