2013-05-21 2 views
0

Я работаю над некоторыми шифрами (просто теория, еще не кодирование). В настоящее время я делаю шифр холма, и я могу использовать его в порядке. Однако я столкнулся с проблемой, которая меня превзошла. Скажем, например, я шифрую буквы A и I. A будет 0 и I8. Теперь возьмите свой шифровальный ящик:Реализация алгоритма Hill, когда результаты не ожидаются

K= 18 2 
    23 0 

Это все хорошо и хорошо. Я могу зашифровать как такового:

А = 18 * 0 = 0 2 * 8 = 16

Проблема заключается в том, что добавление этих результатов дает 16. 16% 26 раз 16? Это номер, который я использую для моего шифрования? Подобная проблема возникает, если у меня есть шифрование, где результат равен 260%. 26. Стало ли это 10 или 0? Когда вы разделите 260 на 26, вы получите 10. Чтобы закончить операцию по модулю, я бы забрал все целые числа и умножил остаток на 26. Конечно, если я сделаю это в этом случае, тогда я получу 0, что не может быть умножено. Какие-либо предложения?

ответ

2

Да. 16 % 26 = 16 и 260 % 26 = 0.

Дело в том, что ваша матрица шифрования не может использоваться в качестве ключа шифрования/дешифрования Hill encipher. Причина в том, что матрица шифрования должна иметь inverse matrix (по модулю 26). Другими словами, матрица determinant должна быть nonzero и не делиться на 2 или 13. Фактически, determinant вашей матрицы - 24 mod 26, что не может удовлетворить этому требованию шифрования Хилла. Вот почему вы получили странный результат, и дешифровка не удалась.

Итак, попробуйте создать еще одну матрицу шифрования, которая обладает требуемым свойством. Например,
3 5
1 2 может использоваться как матрица шифрования.

+0

благодарит за ответ. Это имеет смысл и эхо, о чем я уже думал. Страшно то, что я взял этот пример из университетского экзаменационного документа. – Gavin

Смежные вопросы