|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Нестандартное умножение по модулю |
|
.NET - Нестандартное умножение по модулю
|
Пользователь Сообщения: 107 |
Часть реализации шифра.
В общем ТЗ: умножение по модулю 2^16+1 = 65537, причем вместо числа, равного нулю, используется 2^16. Constants.decip_mod = 65537; Constants.fyui = 65536; Constants.one = 65535; Как сделано в одном источнике (я не могу понять что к чему тут, разъясните пожалуйста полностью): long p; long q; if(a==0) p = Constants.decip_mod - b; else if(b==0) p=Constants.decip_mod - a; else { q = a * b; p = (q & Constants.one) - (q>>16); // & = битовое логическое умножение if(p<=0) p = p + Constants.decip_mod; } return (long)(p&Constants.one); if (a == 0) a = Constants.fuyi; if (b == 0) b = Constants.fuyi; p = ((a * b) % (Constants.decip_mod)); return p; И ещё: в одном месте находил этот исходник с парой комментариев, один из них был как раз к этой функции: multiplication using the Low-High algorithm. |
|
Отправлено: 22:51, 21-10-2012 |
Пользователь Сообщения: 107
|
Для теста сделал
сравниваю результаты своей функции и той функции, если не совпадают то вывожу аргументы и результаты |
Последний раз редактировалось Sidewalker, 25-02-2013 в 15:26. Отправлено: 23:04, 21-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 107
|
multiplication of integers modulo 2^16+1 where the subblock is treated as the usual radix-two representation of an integer except that the all-zero subblock is treated as representing 2^16.
Видимо имелось в виду, что ПОСЛЕ умножения и взятия по модулю возвращаемое значение p, если оно равно 2^16, надо перевести в 0 (т.е. в обратную сторону уже). Теперь работает. Ох уж эти америкосы, так сложно пообширней написать чтобы понятно было. |
Отправлено: 23:42, 21-10-2012 | #3 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Вопрос: Какими судьбами ты с таким алгоритмом столкнулся? Не для реализации алгоритма IDEA случайно?
|
Отправлено: 14:39, 27-12-2014 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
вопрос по модулю памяти | simsa | Материнские платы и память | 4 | 30-08-2011 01:53 | |
Assm - Умножение матриц | svdanik | Программирование и базы данных | 1 | 03-07-2011 00:15 | |
Умножение в Excel | Gue st | Хочу все знать | 24 | 13-12-2008 01:46 | |
Вопрос по модифицированному модулю 7z | r0L1K | Автоматическая установка Windows 2000/XP/2003 | 2 | 12-12-2008 11:26 | |
Массовое умножение в Excel | ANDRY | Хочу все знать | 3 | 29-04-2003 13:58 |
|