Вперед: 9.2.5 Альтернативный подход
Вверх: 9.2 Алгоритмические проблемы реализации и применения криптографических протоколов на интеллектуальных карточках
Назад: 9.2.3 Методы ускорения операции сложения
  Содержание
  Предметный указатель
Вряд ли можно найти метод ускоренного возведения в
степень эффективнее, чем бинарный метод, основанный на
считывании степени слева направо. В силу ряда причин
[Кнут, стр. 485] использование в этом методе любого
другого основания не дает особого выигрыша при большом
значении показателя степени.
Этот метод достаточно прост и нагляден, история его
восходит еще к 200 г. до н. э.
Пусть
двоичное представление
положительного числа и , и --
положительные целые числа в -ичной системе
счисления, тогда псевдокод алгоритма
имеет
вид, представленный на рис. 10.
Рис. 10.
Алгоритм
. Бинарный метод,
основанный на считывании степени слева направо
|
Из описания алгоритма 6 видно, что число обращений
к операции вида
будет
, где
-- число единиц в двоичном представлении
операнда .
Для ускорения операции дискретного возведения в
степень используется также метод, основанный на аддитивных
цепочках (см., например, [Кнут], [Y]).
Бинарный метод может быть усовершенствован за счет
перекодирования
степени . При многократном использовании операции
возведения
в степень такой алгоритм дает выигрыш не менее 30% по
сравнению с бинарным методом [CMY].
Сущность этого усовершенствования проиллюстрирована на
рис. 11 и
заключается в представлении в
избыточной форме, где
.
Эффект достигается за счет уменьшения количества
"не-нулей" (т. е. ,
) в избыточном
представлении по сравнению с его двоичным
представлением.
Рис. 11.
Алгоритм
. Метод, основанный на
перекодировании
|
Значение
можно предварительно вычислить
при помощи расширенного алгоритма Евклида: вычисляются
целые и такие, что , где НОД.
Пусть -- число единиц до
кодирования, -- число "не-нулей" после
кодирования, тогда если достаточно велико и
необходимо вычислить последовательность
,
где
, то общий выигрыш в среднем
может составить
.
Целесообразно рассматривать операции
и
не по
отдельности, а в комплексе. Так как обращение первой
функции ко второй происходит неоднократно, а значения
и при этом не меняются, то имеет смысл для сокращения
общего времени передавать и в процедуру вычисления
только при
первоначальном обращении. Операция
рассматривается как частный случай
, что
предусматривает передачу в соответствующую процедуру только одной переменной
(если при первоначальной инициализации уже передано).
Можно рассматривать
как
и
уменьшить таким образом время выполнения за счет методов
ускорения операции возведения в квадрат, предложенных,
например, в [Ш]. Однако в этом случае требуется
дополнительная аппаратура.
При окончательной реализации алгоритма следует
предусмотреть в выходных данных флаг ошибки, например:
и т. д.
Вперед: 9.2.5 Альтернативный подход
Вверх: 9.2 Алгоритмические проблемы реализации и применения криптографических протоколов на интеллектуальных карточках
Назад: 9.2.3 Методы ускорения операции сложения
  Содержание
  Предметный указатель
|