Pracuję nad kilkoma szyframi (tylko teoria, niekodowanie jeszcze). Obecnie robię szyfr na wzgórzu i mogę go dobrze używać. Natknąłem się jednak na problem, który mnie zaskoczył. Powiedzmy na przykład, że szyfruję litery A i I. A
byłoby 0
i I
8
. Teraz weź moje pole szyfrowania:
K= 18 2
23 0
To wszystko dobrze i dobrze. Mogę zaszyfrować jako taki:
A = 18 * 0 = 0 2 * 8 = 16
Problem polega na tym, że dodanie tych wyników powoduje16. Czy 16% 26 to tylko 16? Czy to numer, którego używam do szyfrowania? Podobny problem występuje, jeśli mam szyfrowanie, którego wynikiem jest 260% 26. Czy to staje się 10 czy 0? Po podzieleniu 260 przez 26 otrzymujesz 10. Aby zakończyć operację modulo, zabrałbym dowolną liczbę całkowitą i pomnożę resztę przez 26. Oczywiście, jeśli zrobię to w tym przypadku, otrzymam 0, której nie można pomnożyć. Jakieś sugestie?
Odpowiedzi:
2 dla odpowiedzi № 1Tak. 16 % 26 = 16
i 260 % 26 = 0.
Chodzi o to, że matrycy szyfrowania nie można użyć jako klucza szyfrowania / deszyfrowania szyfru Hill. Powodem jest to, że macierz szyfrowania musi mieć inverse matrix
(modulo 26
). Innymi słowy, determinant
macierzy musi być nonzero
i niepodzielony przez 2
lub 13
. W rzeczywistości, determinant
macierzy jest 24 mod 26
, który nie może spełnić tego wymogu szyfru Hill. Właśnie dlatego masz dziwny wynik i deszyfrowanie się nie powiedzie.
Spróbuj więc wygenerować inną macierz szyfrowania, która ma wymaganą właściwość. Na przykład,
3 5
1 2
może być użyty jako matryca szyfrująca.