№ п/п | Описание операции | Пример |
Выбираются простое число p и два любых случайных числа g и x меньше p. | p=23, g=3, x=5 | |
Вычисляется y = gx mod p | y = 35 mod 23 = 243 mod 23 = 13 | |
Открытый ключ - y, g и p. Причем g и p можно сделать общими для группы пользователей. Закрытый ключ - x. |
Перед шифрованием вначале выбирается k взаимно простое с p-1, после чего шифрограмма генерируется по следующим формулам
a = gk mod p, (10)
b = (yk mod p) Å T, (11)
где a, b – зашифрованное сообщение.
Дешифрование сообщения выполняется по следующей формуле
T = (ax mod p) Å b. (12)
Пример шифрования и дешифрования по алгоритму Эль-Гамаля при k=7 приведен в таблице. Первая часть шифрованного сообщения - a = 37 mod 23 = 2.
Таблица 8
Пример шифрования по алгоритму Эль-Гамаля
Открытое сообщение, символ | А | Б | Р | А | М | О | В |
Код символа | |||||||
Вторая часть шифрограммы, b = (137 mod 23) Å T = 9 Å T | |||||||
Открытое сообщение, T = (25 mod 23) Å b = 9 Å b |
Алгоритм на основе задачи об укладке ранца.
|
|
Проблема укладки ранца формулируется следующим образом. Дано множество предметов различного веса. Спрашивается, можно ли положить некоторые из этих предметов в ранец так, чтобы его вес стал равен определенному значению?
Более формально задача формулируется так: дан набор значений M1, M2,..., Мn и суммарное значение S; требуется вычислить значения bi такие что
S = b1М1+b2М2 +... + bnМn, (13)
где n – количество предметов;
bi - бинарный множитель. Значение bi = 1 означает, что предмет i кладут в рюкзак, bi = 0 - не кладут.
Например, веса предметов имеют значения 1, 5, 6, 11, 14, 20, 32 и 43. При этом можно упаковать рюкзак так, чтобы его вес стал равен 22, использовав предметы весом 5, 6 и 11. Невозможно упаковать рюкзак так, чтобы его вес стал равен 24.
В основе алгоритма, предложенного Мерклом и Хеллманом, лежит идея шифрования сообщения на основе решения серии задач укладки ранца.
Предметы из кучи выбираются с помощью блока открытого текста, длина которого (в битах) равна количеству предметов в куче. При этом биты открытого текста соответствуют значениям b, a текст является полученным суммарным весом.
Пример шифрограммы, полученной с помощью задачи об укладке ранца, показан в следующей таблице.
Таблица 9