2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Быстрый алгоритм GCD
Сообщение28.05.2017, 20:18 


28/05/17
1
Пытаюсь реализовать расширенный алгоритм Лемьера(поиск gcd и коэффициентов Безу) из книги Handbook of Elliptic and Hyperelliptic Curve Cryptography.
Вот ссылка
https://books.google.ru/books?id=w6b0yhURTkQC&pg=PA192&lpg=PA192&dq=lemher+extended+gcd&source=bl&ots=0VIvhEbVIR&sig=EEIGwCORnNIq6ktef6c-Z0x1OIY&hl=ru&sa=X&ved=0ahUKEwj0m-TeiZPUAhVGOJoKHTRDCs0Q6AEIQjAD#v=onepage&q=lemher%20extended%20gcd&f=false

Мне кажется, в этом алгоритме ошибка, вот пример:
Код:
For example, take numbers:
x = 0x3 3333 3333 3333 3333
N = 0xA AAAA AAAA AAAA AAAA
Platform is x64, so l = 64

A = 0xA AAAA AAAA AAAA AAAA, B = 0x3 3333 3333 3333 3333, Ua = 0, Ub = 1

A^ = 0xAAAA AAAA AAAA AAAA, B^ = 0x3333 3333 3333 3333, alpha = 1, beta = 0, alpha' = 0, beta' = 1
B^ != 0, so q <- [A^/B^] = 3, T <- A^ mod B^ = 0x1111 1111 1111 1111
T >= 2^(l/2), so q' <- [B^/T] = 3, T' <- B^ mod T = 0
T' < 2^(l/2), so break;
beta == 0, so alpha = 0, beta = 1, alpha' = 1, beta' = -[A/B] = -3
return {alpha, beta, alpha', beta'} = {0,1,1,-3}

[A] = [alpha beta]*[A] = [0 1] [0xA AAAA AAAA AAAA AAAA] = [0x3 3333 3333 3333 3333]
[B]    [alpha' beta'] [B]    [1 -3][0x3 3333 3333 3333 3333]        [0x1 1111 1111 1111 1111]

[Ua] = [alpha beta]*[Ua] = [0 1] [0] = [1]
[Ub]    [alpha' beta'] [Ub]    [1 -3][1]   [-3]

A = 0x3 3333 3333 3333 3333, B = 0x1 1111 1111 1111 1111, Ua = 1, Ub = -3
A^ = 0xCCCC CCCC CCCC CCCC, B^ = 0x4444 4444 4444 4444, alpha = 1, beta = 0, alpha' = 0, beta' = 1
B^ != 0, so q <- [A^/B^] = 3, T <- A^ mod B^ = 0
T' < 2^(l/2), so
beta == 0, so alpha = 0, beta = 1, alpha' = 1, beta' = -[A/B] = -3
return {alpha, beta, alpha', beta'} = {0,1,1,-3}

[A] = [alpha beta]*[A] = [0 1] [0x3 3333 3333 3333 3333] = [0x1 1111 1111 1111 1111]
[B]    [alpha' beta'] [B]    [1 -3][0x1 1111 1111 1111 1111]    [0]

[Ua] = [alpha beta]*[Ua] = [0 1] [1] = [-3]
[Ub]    [alpha' beta'] [Ub]    [1 -3][-3]   [10]

A = 0x1 1111 1111 1111 1111, B = 0, Ua = -3, Ub = 10
Next step we must compute (u, v, d) by Algorithm 10.42 with arguments A and B, but B is zero and algorithm 10.42 crushes at line 3
q <- [A/B]
In description to algorithm 10.42 says: INPUT: Two POSITIVE integers, but it called with B = 0 in algorithm 10.45

Мой вопрос в следующем
1)действительно ли ошибка в книге или это я ошибаюсь в своих выкладках
2)если ошибка в книге, что нужно изменить в алгоритме, чтобы он заработал

Спасибо

 i  Deggial: код оформлен тегом code. Оформляйте им код, а формулы - $\TeX$ом.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: dgwuqtj, ihq.pl, YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group