IDEA и умножение


Здравствуйте. Возникла следующая проблема.
В алгоритме IDEA есть умножение. Подскажите, пожалуйста, каким образом оно осуществляется? Т.е., например, мы 5 * 6 mod 7 = 2, а теперь как получить исходные 5 или 6, при наличие результата умножения и одного начального числа(ключа; 5 или 6)?

спасибо.

Комментарии
— unknown (19/02/2008 09:21, исправлен 19/02/2008 09:26)   

Ну если 5 * 6 mod 7 = 2


то 5 = 2 * 6 -1 mod 7 и 6 = 2 * 5 -1 mod 7


Т.е. надо найти т.н. обратные множители (multiplicative inverse) по модулю простого числа (т.е. в мультипликативной группе или поле, если простое чилсо).


Т.е. 6 -1 * 6 = 1 mod 7 и 5 -1 * 5 = 1 mod 7


Самый простейший вариант – расширенный алгоритм Евклида, но есть много оптимизаций.