Вопрос

Я хочу реализовать Hill cipher, но я думаю, что у меня проблема с пониманием самого алгоритма.

Ключ, который я буду использовать, представляет собой матрицу 2X2, и каждый раз я буду кодировать по 2 символа.Я умножу ключевую матрицу на матрицу из 2 символов, затем умножу результат на 26 в виде этого уравнения.

C = E(K, P) = KP mod 26
where: K:key
       P:plain text

Я делаю это вот так, но здесь что-то не так.Я использую пример из своей книги, чтобы протестировать свой алгоритм.Поскольку обычный текст является friday и ключ к этому есть: int key[][] = {{5, 8}, {17, 3}};результатом должно быть PQCFKU.

Для первых букв f , r , f= 5 , r=17 порядок следования букв алфавита шифрование f является (5*5 + 17*8)%26 =5 => f это должно быть P

Где ошибка, которую я допускаю?

Это было полезно?

Решение

Если это: http://slidefinder.net/c/chapter_classical_encryption_techniques_jen/11206531/p2 это ваша книга, матрица [[5, 8] [17, 3]] это не ваш ключ шифрования...это входная матрица.5 = F, 17 = R, 8 = I, 3 = D.K - это ключ шифрования, который не указан на слайде.Вам пришлось бы решить уравнение линейной алгебры, чтобы получить K.

Если у вас все еще возникают проблемы с примером из вашей книги, попробуйте http://www.cs.uri.edu/cryptography/classicalhill.htm для простого примера ключа 2x2 как с шифрованием, так и с дешифрованием.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top