2016/04/21

Бінарний метод піднесення до степеня

Однією з задач, що найчастіше зустрічаюся при реалізації різноманітних криптоалгоритмів, є задача піднесення деякого числа до певного степеня, тобто обчислення значення функції f(x)= x , зокрема піднесення до степеня за деяким модулем n - f(x)=xbmod n. Прямолінійний алгоритм (він буде експоненційним) потребує значних обчислювальних затрат. Проте відомо набагато ощадливіший алгоритм, котрий називається бінарний метод піднесення до степеня.
Нехай нам задано: x Є Z . Потрібно знайти f(x)=xbmod n.
Подамо показник d в двійковій системі числення, тобто
d=(dl dl-1 ... d1 d0 )2, де di Є {0;1}.
Алгоритм буде складатись з l+1 команд. Спочатку покладаємо z0=l. Тоді і-та команда задається так:

Результатом виконання останньої є значення xdmod n.

Немає коментарів:

Дописати коментар