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 сообщение ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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