Редукція Барретта: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Вилучено вміст Додано вміст
Створена сторінка: У модульній арифметиці, '''зведення Барретта''' — це алгоритм з...
(Немає відмінностей)

Версія за 12:01, 29 жовтня 2016

У модульній арифметиці, зведення Барретта — це алгоритм знайдення лишку за модулем запропонований Барреттом у 1986.[1] Наївний спосіб обчислення

полягає у використанні швидкого алгоритму ділення. Зведення Барретта є алгоритмом спроектованим для оптимізації цієї операції за умов сталості і заміняючи ділення на множеннями.

Алгоритм

Попередні обчислення:

  1. Нехай і це не степінь 2. (Це необхідно для наступного доведення і, тому що ділення за модулем, що дорівнює степені 2 є тривіальним.)
  2. Обрати таке, що (Найменше таке дорівнює )
  3. Обчислимо (Це є наш наперед обчислений множник.)

Зведення:

  1. Маємо таке, що залишок від ділення на якого нам потрібно знайти.
  2. Обчислюємо
  3. Якщо тоді повернути інакше . Цей результат дорівнює

Доведення правильності

  1. Оскільки не є степенем 2, то ми знаємо, що не ціле. Отже,
  2. Множення на
  3. Ділення на
  4. З того, що випливає, що Тому:
  5. Також: і Разом маємо:
  6. Множимо на
  7. Множимо на
  8. Додаємо
  9. Очевидно, що оскільки це число кратне

Тут ми отримали результат зведення з діапазону до в діапазоні без зміни конгруентності за модулем Останній крок простий, необхідно отримати результат в діапазоні

Примітки

  1. Barrett, P. (2006). Implementing the Rivest Shamir and Adleman Public Key Encryption Algorithm on a Standard Digital Signal Processor. Advances in Cryptology — CRYPTO' 86. Lecture Notes in Computer Science. Т. 263. с. 311—323. doi:10.1007/3-540-47721-7_24. ISBN 978-3-540-18047-0.