Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
8 июня 2014, 11:48:14 PM   # 1
 
 
Сообщений: 38
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Несжатого открытый ключ является:
0x04 + координата х + у-координата

Сжатый открытый ключ является:
0x02 + х-координату, если у еще
0x03 + X-координата, если у нечетно

Как использовать это уравнение для вывода несжатого открытого ключа

у ^ 2 по модулю р = (х ^ 3 + 7) по модулю р

 
Фаргали сейчас офлайн Пожаловаться на Фаргали   Ответить с цитированием Мультицитирование сообщения от Фаргали Быстрый ответ на сообщение Фаргали


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


9 июня 2014, 12:53:21 AM   # 2
 
 
Сообщения: 247
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

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





Из https://en.wikipedia.org/wiki/Quadratic_residue а также http://mersennewiki.org/index.php/Modular_Square_Root, если

г ^ 2 = а по модулю т, где т = 3 по модулю 4 (в secp256k1-х р делает)
тогда
г = + -a ^ ((т + 1) / 4) тойт

Так:

у ^ 2 по модулю р = (х ^ 3 + 7) по модулю р
у того р = + - (х ^ 3 + 7) ^ ((р + 1) / 4) по модулю р

Таким образом, вычислить (х ^ 3 + 7) ^ ((р + 1) / 4) по модулю р, и если четность первого ответа вы получаете не так, то взять негатив этого ответа (так как мы работаем по модулю нечетное число, принимая негатив будет переворачивать даже / нечетный).

Просто для удовольствия, вот некоторый Python кода, который будет делать расчет в мгновении ока, запрограммированный для работы на открытом ключе (случайный) закрытого ключ 55255657523dd1c65a77d3cb53fcd050bf7fc2c11bb0bb6edabdbd41ea51f641

Код:
Защиту pow_mod (х, у, г):
    "Вычислить (х ** у)% Z эффективно."
    число = 1
    в то время как у:
        если у & 1:
            число = число * х% г
        Y >>= 1
        х = х * х% г
    возвращение номер

р = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
compressed_key = '0314fc03b8df87cd7b872996810db8458d61da8448e531569c8517b469a119d267'
y_parity = INT (compressed_key [: 2]) - 2
х = INT (compressed_key [2:], 16)
а = (pow_mod (х, 3, р) + 7)% р
у = pow_mod (а, (р + 1) // 4, р)
если у% 2 = y_parity:
    у = -y% р
uncompressed_key = '04 {:} {х: х}. Формат»(х, у)
печать (uncompressed_key)
TIMS сейчас офлайн Пожаловаться на TIMS   Ответить с цитированием Мультицитирование сообщения от TIMS Быстрый ответ на сообщение TIMS

9 июня 2014, 6:07:36 PM   # 3
 
 
Сообщения: 1512
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

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

9 мая 2015, 3:05:01 PM   # 4
 
 
Сообщений: 31
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

Кто может дать реализацию на C ++?
FTC-с сейчас офлайн Пожаловаться на FTC-с   Ответить с цитированием Мультицитирование сообщения от FTC-с Быстрый ответ на сообщение FTC-с

10 мая 2015, 1:01:24 AM   # 5
 
 
Сообщения: 412
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

@ FTC-с: Используйте libsecp256k1, AFAIK имеет препроцессора материал для Си ++, и это достаточно легко работать до конца.
fbueller сейчас офлайн Пожаловаться на fbueller   Ответить с цитированием Мультицитирование сообщения от fbueller Быстрый ответ на сообщение fbueller

10 мая 2015, 5:22:53 PM   # 6
 
 
Сообщения: 1274
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

Следующая ссылка показывает, как это сделать в C с использованием библиотеки polarssl / mbedTLS, вы должны быть в состоянии к порту этого через другую библиотеку криптографической так долго, как это имеет собственный «bignum» реализация / МПИ.

https://gist.github.com/flying-fury/6bc42c8bb60e5ea26631

Приведенный выше пример содержит тестовые данные, а также, от комментариев «// Set y2 = X ^ 3 + B» и «// Вычислить квадратный корень из y2» вы можете увидеть, где важная часть делается.

Я использовал выше, чтобы сделать DLL / так / dylib, который делает это полезное преобразование, основанный на коде выше.

Что deepceleron сказал, также прикладывает, есть два различные монетный адрес, которые могут быть созданы из одного секретного ключа в зависимости от того, открытого ключа «сжатый» или нет.

Выше преобразование еще полезно, если вы используете ECC для таких вещей, как проверка подписей.
Samson сейчас офлайн Пожаловаться на Samson   Ответить с цитированием Мультицитирование сообщения от Samson Быстрый ответ на сообщение Samson

10 мая 2015, 5:28:55 PM   # 7
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

Добро пожаловать использовать код CIYAM, который включает в себя части кода Bitcoin, а также (но может быть легче следовать в терминах классов C ++, поскольку это не связано с какой-либо Повысьте вещи).

https://github.com/ciyam/ciyam/blob/master/src/crypto_keys.cpp
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

9 января 2017, 8:46:38 AM   # 8
 
 
Сообщения: 224
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

Помните, что нет никакого практического основания "конвертировать" между несжатыми и сжатыми открытыми ключами. Каждый из них имеет свой собственный адрес Bitcoin - вы не можете тратить деньги, отправленные на адрес несжатого публичного ключа со сжатым открытым ключом.

Здравствуй

Таким образом, я мог бы использовать оба адрес, чтобы получить средства, пока у меня есть один закрытый ключ?

Blockchain Механик сейчас офлайн Пожаловаться на Blockchain Mechanic   Ответить с цитированием Мультицитирование сообщения от Blockchain Механик Быстрый ответ на сообщение Blockchain Механик

9 января 2017, 1:22:30 PM   # 9
 
 
Сообщения: 1288
Цитировать по имени
цитировать ответ
по умолчанию Re: Как получить несжатый открытый ключ из сжатого одного?

Помните, что нет никакого практического основания "конвертировать" между несжатыми и сжатыми открытыми ключами. Каждый из них имеет свой собственный адрес Bitcoin - вы не можете тратить деньги, отправленные на адрес несжатого публичного ключа со сжатым открытым ключом.

Здравствуй

Таким образом, я мог бы использовать оба адрес, чтобы получить средства, пока у меня есть один закрытый ключ?


Да. Сжатый открытый ключ и несжатых из них имеют различные открытые ключи, но они могут быть получены из того же секретного ключа. Тем не менее, они могут отличаться в формате бумажник импорта, закрытые ключи, начиная с 5 сжаты в то время как несжатыми начинается с K или L.
ranochigo сейчас офлайн Пожаловаться на ranochigo   Ответить с цитированием Мультицитирование сообщения от ranochigo Быстрый ответ на сообщение ranochigo



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW