Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
15 июня 2012, 1:33:37 PM   # 1
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Как вы распаковывать общественную точку?

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
EDIT: Кажется, что решение здесь:  Алгоритм Tonelli-Черенки


Так я узнал о сжатых общественных точках в последнее время и у меня есть вопрос: Как вы распаковывать один?

Я имею в виду, с прессованной общественной точкой вы имеете позицию X и логический сообщающую, Y, является ли четным или нечетным.

Так что я подумал:

«ОК, я просто вычислить квадратный корень из X ^ 3 + ах + Ь, то есть квадратный корень из X ^ 3 + 7»,

но так как это модульная арифметика, это возможно только ?? Я думал, что совсем немного об этом, и я не мог найти начало идеи.

Я знаю, что я мог бы посмотреть на исходный код OpenSSL, но если кто-то может дать мне быстро объяснить, что бы избавить меня немного хлопот.
grondilu сейчас офлайн Пожаловаться на grondilu   Ответить с цитированием Мультицитирование сообщения от grondilu Быстрый ответ на сообщение grondilu


Как заработать Биткоины?
Без вложений. Не майнинг.


20 июня 2012, 1:50:24 PM   # 2
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Как вы распаковывать общественную точку?

Получил 1806 Биткоинов
Реальная история.







В статье Тонелли-Shanks упоминалось выше, он говорит, что, когда р = 3 [мод 4], то ответ просто:

п ^ ((р + 1) / 4)

[Остаток: мы хотим вычислить р-модульного квадратный корень из п]

Это здорово, потому что именно с secp256k1 мы в данном конкретном случае.

Но признаюсь, я не понимаю, почему это соотношение верно.

Если р = 3 [мод 4], то есть таким образом, что д: р = 4 * д + 3

Хорошо, таким образом (р + 1) / 4 = (4 * д + 4) / 4 = д + 1.

Так:

п ^ ((р + 1) / 4) = п ^ (д + 1)

Хорошо, это здорово. Но так что ?? Я не вижу, как это показывает мне, что (п ^ ((р + 1) / 4)) ^ 2 = п (что мы хотим).


Я могу жить без понимания этого. Но это отчасти раздражает. Может кто-нибудь просветить меня?
grondilu сейчас офлайн Пожаловаться на grondilu   Ответить с цитированием Мультицитирование сообщения от grondilu Быстрый ответ на сообщение grondilu

20 июня 2012, 2:29:43 PM   # 3
 
 
Сообщения: 476
Цитировать по имени
цитировать ответ
по умолчанию Re: Как вы распаковывать общественную точку?

Я не вижу, как это показывает мне, что (п ^ ((р + 1) / 4)) ^ 2 = п (что мы хотим).
Я могу жить без понимания этого. Но это отчасти раздражает. Может кто-нибудь просветить меня?

 (П ^ ((р + 1) / 4)) ^ 2 = (п ^ ((р + 1) / 2)) = (п ^ ((р-1 + 2) / 2)) = (п ^ ( (р-1) / 2)) * п = (*) п

(*) По определению символ Лежандра, если п квадратичный вычет (который в данном случае), (п ^ ((р-1) / 2)) = 1 (по модулю р) (доказать, что это хорошая практика )

Причина р = 3 (по модулю 4) должен провести так, что (р + 1) / 4 является целым числом.
vuce сейчас офлайн Пожаловаться на vuce   Ответить с цитированием Мультицитирование сообщения от vuce Быстрый ответ на сообщение vuce

20 июня 2012, 2:37:58 PM   # 4
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Как вы распаковывать общественную точку?

Я не вижу, как это показывает мне, что (п ^ ((р + 1) / 4)) ^ 2 = п (что мы хотим).
Я могу жить без понимания этого. Но это отчасти раздражает. Может кто-нибудь просветить меня?

 (П ^ ((р + 1) / 4)) ^ 2 = (п ^ ((р + 1) / 2)) = (п ^ ((р-1 + 2) / 2)) = (п ^ ( (р-1) / 2)) * п = (*) п

(*) По определению символ Лежандра, если п квадратичный вычет (который в данном случае), (п ^ ((р-1) / 2)) = 1 (по модулю р) (доказать, что это хорошая практика )

Причина р = 3 (по модулю 4) должен провести так, что (р + 1) / 4 является целым числом.

Хорошо, так что это не было очевидным, и требуется некоторое понимание символа Лежандра, Euler критериум и тому подобное, не так ли?

У меня не было никаких причин стыдиться не понимая. Какое облегчение.

Спасибо, в любом случае.

PS. господи, модульная арифметика является жесткой.
grondilu сейчас офлайн Пожаловаться на grondilu   Ответить с цитированием Мультицитирование сообщения от grondilu Быстрый ответ на сообщение grondilu

24 июня 2012, 1:13:04 AM   # 5
 
 
Сообщения: 331
Цитировать по имени
цитировать ответ
по умолчанию Re: Как вы распаковывать общественную точку?

Фуллер объяснение:

Если у вас есть полномочия целого по модулю некоторого другого целого числа, эти силы всегда идут в цикле. Например, пусть п = 3, р = 10, и обозначение (3, К, 10) = 3 ^ к модулю 10.

(3,1,10) = 3
(3,2,10) = [(3,1,10) * 3] по модулю 10 = (3 * 3) по модулю 10 = 9
(3,3,10) = [(3,2,10) * 3] по модулю 10 = (9 * 3) по модулю 10 = 7
(3,4,10) = [(3,3,10) * 3] по модулю 10 = (7 * 3) по модулю 10 = 1
(3,5,10) = [(3,4,10) * 3] по модулю 10 = (1 * 3) по модулю 10 = 3
(3,6,10) = [(3,5,10) * 3] по модулю 10 = (3 * 3) по модулю 10 = 9
(3,7,10) = [(3,6,10) * 3] по модулю 10 = (9 * 3) по модулю 10 = 7
(3,8,10) = [(3,7,10) * 3] по модулю 10 = (7 * 3) по модулю 10 = 1

И так далее.

Так оказывается, что для простых чисел длина цикла должна быть фактором р-1, так что п ^ (р-1) по модулю р = 1, хотя он может также равен 1 в одной или нескольких промежуточных точках. Вы можете найти доказательства этого здесь: http://en.wikipedia.org/wiki/Proofs_of_Fermat's_little_theorem#Necklaces.

Например, при п = 3, р = 11, цикл выглядит следующим образом:

3,9,5,4,1,3,9,5,4,1,3 ...

Обратите внимание на то, как 3 ^ 10 по модулю 11 = 1, хотя 3 ^ 5 мод 11 также = 1. При п = 6, р = 11, цикл продолжается:

6,3,7,9,10,5,8,4,2,1,6 ...

Критерием для ряда к циклу в (р-1) / 2 шага, а не (р-1) является то, что число должно быть квадратичный вычет, Это означает, что он должен быть квадратом другого числа по модулю р. При р = 11, например, 3 = 6 ^ 2 мод 11 (с 6 ^ 2 = 36, и ближайший кратно 11 ниже 36 составляет 33). Причина, почему это так просто: если п квадратичный вычет, он может быть представлен в виде к ^ 2 по модулю р. Так как к циклу должен каждые п-1 шагов, и каждый шаг п соответствует 2 шага к, п можно покрыть цикл в (р-1) / 2 шагов.

Теперь перейдем к главной задаче.

Мы пытаемся найти квадратный корень из п по модулю р. Что это означает, что мы хотим, чтобы найти некоторое число к, что к ^ 2 по модулю р = п. Тем не менее, мы знаем, что это к существует, поэтому п должен быть квадратичным вычетом. Это означает, что длина цикла п (р-1) / 2, а это означает, что:

п ^ [(р-1) / 2] по модулю р = 1

п ^ [(р-1) / 2 + 1] по модулю р = п

п ^ [(р + 1) / 2] по модулю р = п

Если (р + 1) / 2 сама по себе четное число, то мы можем идти точно (р + 1) / 4 шага, чтобы получить к. Теперь, что это значение к ^ 2 по модулю р?

к ^ 2 по модулю р = {п ^ [(р + 1) / 4]} ^ 2 по модулю р = {п ^ [(р + 1) / 2]} по модулю р = п

И там у вас есть, вы нашли значение к, которое удовлетворяет условие, что делает его квадратный корень из п. Единственным условием для этого алгоритма является то, что (р + 1) / 2 четно, то есть. р + 1 является кратным 4, или п той 4 = 3.
Виталик Батерин сейчас офлайн Пожаловаться на Виталик Бутерин   Ответить с цитированием Мультицитирование сообщения от Виталик Бутерин Быстрый ответ на сообщение Виталик Бутерин



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW