n align="justify"> рюкзачними алгоритм
Найбільш наочним способом розгляду роботи алгоритму є розбір прикладу його роботи:
Етап обчислення ключів
b = (1, 4, 6, 14, 30) - супервозрастающая послідовність;
m = 60 - випадкове число, більше, ніж сума bi, i = 1 .. 6;
w = 11 - випадкове число, взаємно просте з m;
? = (2, 1, 5, 3, 4) - масив перестановок, вибирається довільно (в даному випадку елемент b2 - буде йти першим, b1 - другим і т.д.). Введений для підвищення криптостійкості алгоритму;
Відкритий ключ обчислюється за формулою:
ai = w * b ? (i) mod (m)
Отримаємо: = 11 * 4 = 44; = 11 * 1 = 11; = 11 * 30 = 330 mod (60) = 30; = 11 * 6 = 66 mod (60) = 6; = 11 * 14 = 154 mod (60) = 34;
Відкритий ключ: = (44, 11, 30, 6 34);
Закритий ключ є сукупністю (?, w, m, b).
Нехай необхідно зашифрувати послідовність
M = 01011
С =? Mi ai = 11 + 6 + 34 = 51 - число, яке передається в канал. br/>
Одержувач, прийнявши повідомлення, розшифровує його:
= w-1 * C mod (m); = 11; w -1 = 11; = 11 * 51 mod 60 = 21; =? zi bi;
= _ * 1 + _ * 4 + _ * 6 + _ * 14 + _ * 30 = 21
Коефіцієнти (0 або 1) відновлюються справа наліво у відповідність з тим, чи входить число, для якого необхідно обчислити коефіцієнт в результат.
Обчислимо коефіцієнти:
Для 21:
<30 => коефіцієнт 0:
H = _ * 1 + _ * 4 + _ * 6 + _ * 14 + 0 * 30 = 21
Для 14:
<14 => коефіцієнт 1
Якщо число менше результату (коефіцієнт дорівнює 1), його необхідно відняти з результату:
- 14 = 7
H = _ * 1 + _ * 4 + _ * 6 + 1 * 14 + 0 * 30 = 7
Для 6:
> 6 => коефіцієнт 1;
- 6 = 1
H = _ * 1 + _ * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 1
Для 4:
<4 => коефіцієнт 0;
H = 1 * 1 + 0 * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 1
Відповідно, для 1 коефіцієнт дорівнює 1.
H = 1 * 1 + 0 * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 0
М = 0 1 0 1 1
Пер...