EgoRusMarch
@EgoRusMarch
C++ Developer

Как посчитать обратную матрицу, такой, чтобы она была целочисленная и неотрицательная?

В общем, нужно по криптосистеме Хилла для расшифровки посчитать обратную матрицу-ключ, но не простую, а золотую целочисленную и неотрицательную.

Получилось найти целочисленную, но отрицательную. А отрицательной она становится из-за того, что мы делаем из исходной матрицу алгебраических дополнений.

Пример:
|3 3| - исходная матрица A
|2 5|

|5 2| - матрица миноров M
|3 3|

|5 -2| - матрица алгебраических дополнений M'
|-3 3|

|5 -3| - транспонированная матрица ( M' )^t
|-2 3|

m = 34 (алфавит)

det = 3*5 - 3*2 = 9

det^-1 (обратный определитель) такой, что: det * det^-1 mod m = 1
9 * 19 mod 34 = 1
det^-1 = 19

A^-1= det^-1 * ( M' )^t mod m

Получается:
|27 -23|
| -4 23|

Она работает только на части биграмм, то есть через раз. Ее нужно как-то преобразовать в неотрицательную. Подскажите как это можно сделать.
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
EgoRusMarch
@EgoRusMarch Автор вопроса
C++ Developer
Нужно было просто сложить отрицательные числа с размером алфавита:
|27 -23+34|
| -4+34 23|
Получается
|27 11|
| 30 23|
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThePyzhov
@ThePyzhov
iOS Ninja
Прибавьте вторую строку к первой, а затем первую ко второй, и будет вам положительная матрица.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы