frz
Можливо потрібно додати розширення ключа. Якщо хтось може придумати.
koala
1. Так, для наприклад посольства це не проблема.
2. Таблиці складаються випадковим чином та зберігаються у захищеному місці.
Можливо потрібно придумати алгоритм розширення ключа - коли з паролю будуть формуватися таблиці, а потім шифрування.
Коли придумував цей шифр, мав на увазі обмін повідомленнями між 2 захищеними територіями.
3. Так, нижче описав.
J-операція 1.
Шифрування:
Якщо блок менше 2^16 то Nj mod n.
Припустимо n=12.
Nj = f(xi+1, xi+2). (з 2-х символів - тільки для цього прикладу)
Шифрування:
0) Початок
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12.
1) Nj = f(x2, x3) mod 12 = припустимо 10.
Переставляємо x1 та x10:
x10, {x2, x3}, x4, x5, x6, x7, x8, x9, x1, x11, x12.
2) Nj = f(x3, x4) mod 12 = припустимо 7.
Переставляємо x2 та x7:
x10, x7, {x3, x4}, x5, x6, x2, x8, x9, x1, x11, x12.
3) Nj = f(x4, x5) mod 12 = припустимо 9.
Переставляємо x3 та x9:
x10, x7, x9, {x4, x5}, x6, x2, x8, x3, x1, x11, x12.
4) Nj = f(x5, x6) mod 12 = припустимо 2.
Переставляємо x4 та x7(на позиції 2):
x10, x4, x9, x7, {x5, x6}, x2, x8, x3, x1, x11, x12.
5) Nj = f(x6, x2) mod 12 = припустимо 12.
Переставляємо x5 та x12:
x10, x4, x9, x7, x12, {x6, x2}, x8, x3, x1, x11, x5.
6) Nj = f(x2, x8) mod 12 = припустимо 8.
Переставляємо x6 та x3
(на позиції 8+1, так як позиція 8 використана для функції f(x2, x8)):
x10, x4, x9, x7, x12, x3, {x2, x8}, x6, x1, x11, x5.
7) Nj = f(x8, x6) mod 12 = припустимо 5.
Переставляємо x2 та x12:
x10, x4, x9, x7, x2, x3, x12, {x8, x6}, x1, x11, x5.
8 ) Nj = f(x10, x1) mod 12 = припустимо 8.
Переставляємо x8 та x8 (тобто перестановки немає):
x10, x4, x9, x7, x2, x3, x12, x8, {x6, x1}, x11, x5.
9) Nj = f(x1, x11) mod 12 = припустимо 6.
Переставляємо x6 та x3:
x10, x4, x9, x7, x2, x6, x12, x8, x3, {x1, x11}, x5.
10) Nj = f(x11, x5) mod 12 = припустимо 4.
Переставляємо x1 та x7:
x10, x4, x9, x1, x2, x6, x12, x8, x3, x7, {x11, x5}.
11) Результат:
x10, x4, x9, x1, x2, x6, x12, x8, x3, x7, x11, x5.
Було
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12.
Стало
x10, x4, x9, x1, x2, x6, x12, x8, x3, x7, x11, x5.
J-операція 2.
Розшифрування:
У оберненому порядку.
0) Початок
x10, x4, x9, x1, x2, x6, x12, x8, x3, x7, x11, x5.
1) Nj = f(x11, x5) mod 12 = припустимо 4
Переставляємо x7 та x1:
x10, x4, x9, x7, x2, x6, x12, x8, x3, x1, {x11, x5}.
2) Nj = f(x1, x11) mod 12 = припустимо 6
Переставляємо x3 та x6:
x10, x4, x9, x7, x2, x3, x12, x8, x6, {x1, x11}, x5.
3) Nj = f(x6, x1) mod 12 = припустимо 8
Переставляємо x8 та x8(тобто перестановки немає):
x10, x4, x9, x7, x2, x3, x12, x8, {x6, x1}, x11, x5.
4) Nj = f(x8, x6) mod 12 = припустимо 5
Переставляємо x12 та x2:
x10, x4, x9, x7, x12, x3, x2, {x8, x6}, x1, x11, x5.
5) Nj = f(x2, x8) mod 12 = припустимо 8
Переставляємо x3 та x6
(на позиції 8+1, так як позиція 8 використана для функції f(x2, x8)):
x10, x4, x9, x7, x12, x6, {x2, x8}, x3, x1, x11, x5.
6) Nj = f(x6, x2) mod 12 = припустимо 12
Переставляємо x12 та x5:
x10, x4, x9, x7, x5, {x6, x2}, x8, x3, x1, x11, x12.
7) Nj = f(x5, x6) mod 12 = припустимо 2
Переставляємо x7 та x4:
x10, x7, x9, x4, {x5, x6}, x2, x8, x3, x1, x11, x12.
8 ) Nj = f(x4, x5) mod 12 = припустимо 9
Переставляємо x9 та x3:
x10, x7, x3, {x4, x5}, x6, x2, x8, x9, x1, x11, x12.
9) Nj = f(x3, x4) mod 12 = припустимо 7
Переставляємо x7 та x2:
x10, x2, {x3, x4}, x5, x6, x7, x8, x9, x1, x11, x12.
10) Nj = f(x2, x3) mod 12 = припустимо 10
Переставляємо x10 та x1:
x1, {x2, x3}, x4, x5, x6, x7, x8, x9, x10, x11, x12.
11) Результат:
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12.
Було
x10, x4, x9, x1, x2, x6, x12, x8, x3, x7, x11, x5.
Стало
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12.