Вернуться   Биткоин Форум > - Помощь начинающим
26 апреля 2012, 4:52:46 AM   # 1
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

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


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

Я ищу здесь для понимания математики за преобразования секретного ключа Bitcoin с открытым ключом Bitcoin для веб-сайта я создаю. Сайт будет способен динамически создавать закрытый ключ и соответствующий открытый ключ и Bitcoin адрес (много как bitaddress.org).

Если кто-то может помочь с этим пониманием, я ценю это.

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


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


26 апреля 2012, 5:11:46 AM   # 2
 
 
Сообщения: 742
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

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





Вики удивительный ресурс.

https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses
Red Emerald сейчас офлайн Пожаловаться на Red Emerald   Ответить с цитированием Мультицитирование сообщения от Red Emerald Быстрый ответ на сообщение Red Emerald

26 апреля 2012, 1:44:10 PM   # 3
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Я прочитал, что статья больше раз, чем я могу рассчитывать. Он по-прежнему не объясняет уравнение (ы), используемое для перехода от закрытого ключа к открытому ключу. Он просто говорит, "1) Есть закрытый ключ ECDSA. 2) принять открытый ключ сгенерированный с ней (65 байт, 1 байт 0x04, 32 байта, соответствующие координаты Х, 32 байта, соответствующих Y координат)."  Я не понимаю, как генерируется, что открытый ключ, несмотря на чтение несколько статей по криптографии на эллиптических кривых.
qqq123 сейчас офлайн Пожаловаться на qqq123   Ответить с цитированием Мультицитирование сообщения от qqq123 Быстрый ответ на сообщение qqq123

26 апреля 2012, 1:51:30 PM   # 4
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

если секретный ключ является шестнадцатеричной строкой, попробуйте выполнить следующие функции.

(Извинения автору, я не помню, где я нашел этот код)

Код:
определить ("ADDRESSVERSION","00"); // это шестнадцатеричный байт
 
Функция decodeHex ($ шестигранный)
{
        $ Гекс = strtoupper ($ гекс);
        $ = Символы"0123456789abcdef";
        $ Возврата ="0";
        для ($ I = 0; $ я        {
                $ тока = (строка) StrPos ($ си, $ шестигранных [$ я]);
                $ Возврата = (строка) bcmul ($ возврата,"16", 0);
                $ Возврата = (строка) bcadd ($ возврат, $ ток, 0);
        }
        вернуть $ вернуться;
}
 
Функция encodeHex ($ Декабрь)
{
        $ = Символы"0123456789abcdef";
        $ Возврата ="";
        в то время как (bccomp ($ Декабрь, 0) == 1)
        {
                $ DV = (строка) bcdiv ($ Декабря,"16", 0);
                $ Бэр = (целое число) bcmod ($ декабря,"16");
                $ Декабрь = $ DV;
                $ Возврата = $ возврата $ символы [$ бэр].
        }
        вернуться strrev ($ возврата);
}
 
Функция decodeBase58 ($ base58)
{
        $ Origbase58 = $ base58;
       
        $ = Символы"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        $ Возврата ="0";
        для ($ I = 0; $ я        {
                $ тока = (строка) StrPos ($ си, $ base58 [$ я]);
                $ Возврата = (строка) bcmul ($ возврата,"58", 0);
                $ Возврата = (строка) bcadd ($ возврат, $ ток, 0);
        }
       
        $ Возврата = encodeHex ($ возврата);
       
        // ведущие нули
        для ($ I = 0; $ я        {
                $ Возврата ="00". $ Возврата;
        }
       
        если (STRLEN ($ возврат)% 2! = 0)
        {
                $ Возврата ="0". $ Возврата;
        }
       
        вернуть $ вернуться;
}
 
Функция encodeBase58 ($ шестигранный)
{
        если (STRLEN ($ шестигранный)% 2! = 0)
        {
                умереть("encodeBase58: нечетное число шестнадцатеричных символов");
        }
        $ Orighex = $ шестигранный;
       
        $ = Символы"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        $ Гекс = decodeHex ($ гекс);
        $ Возврата ="";
        в то время как (bccomp ($ шестигранный, 0) == 1)
        {
                $ DV = (строка) bcdiv ($ шестигранной,"58", 0);
                $ Бэр = (целое число) bcmod ($ гекс,"58");
                $ Шестигранной = $ DV;
                $ Возврата = $ возврата $ символы [$ бэр].
        }
        $ Возврата = strrev ($ возврата);
       
        // ведущие нули
        для ($ I = 0; $ я        {
                $ Возврата ="1". $ Возврата;
        }
       
        вернуть $ вернуться;
}
 
Функция hash160ToAddress ($ hash160, $ addressversion = ADDRESSVERSION)
{
        $ Hash160 = $ addressversion $ hash160.
        $ Проверка = упаковка ("ЧАС*" , $ Hash160);
        $ Проверка = хэш ("sha256", Хэш ("sha256", $ Проверить, верно));
        $ Check = зиЬзЬг ($ проверки, 0,8);
        $ Hash160 = strtoupper ($ hash160 $ ​​чек.);
        вернуться encodeBase58 ($ hash160);
}
 
Функция addressToHash160 ($ адр)
{
        $ Адр = decodeBase58 ($ адр);
        $ Адр = зиЬзЬги ($ адр, 2, STRLEN ($ адр) -10);
        вернуть $ адр;
}
 
Функция checkAddress ($ адр, $ addressversion = ADDRESSVERSION)
{
        $ Адр = decodeBase58 ($ адр);
        если (STRLEN ($ адр)! = 50)
        {
                вернуться ложным;
        }
        $ Версия = зиЬзЬги ($ адр, 0,2);
        если (HexDec ($ версия)>HexDec ($ addressversion))
        {
                вернуться ложным;
        }
        $ Check = зиЬзЬг ($ ADDR, 0, STRLEN ($ ADDR) -8);
        $ Проверка = упаковка ("ЧАС*" , $ Чек);
        $ Проверка = strtoupper (хэш ("sha256", Хэш ("sha256", $ Проверка, правда)));
        $ Check = зиЬзЬг ($ проверки, 0,8);
        возвращение $ проверка == зиЬзЬг ($ адр, STRLEN ($ адр) -8);
}
 
Функция hash160 ($ данных)
{
        $ Данные = упаковка ("ЧАС*" , $ Данных);
        вернуть strtoupper (хэш ("ripemd160", Хэш ("sha256", $ Данные, правда)));
}
 
Функция pubKeyToAddress ($ Публичная)
{
        вернуться hash160ToAddress (hash160 ($ Публичных));
}
 
Функция remove0x ($ строка)
{
        если (подстрока ($ строка, 0,2) =="0x"|| SUBSTR ($ строка, 0,2) =="0X")
        {
                $ Строка = зиЬзЬги ($ строки, 2);
        }
        вернуть $ строку;
}
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

26 апреля 2012, 2:06:57 PM   # 5
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

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

26 апреля 2012, 5:56:04 PM   # 6
 
 
Сообщения: 742
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Итак, вы хотите знать, как первоначальный приватный и открытый ключ создается с ECDSA?  "комплекс Math" это, насколько я пошел в этот один лично.

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA
Red Emerald сейчас офлайн Пожаловаться на Red Emerald   Ответить с цитированием Мультицитирование сообщения от Red Emerald Быстрый ответ на сообщение Red Emerald

27 апреля 2012, 2:29:33 AM   # 7
 
 
Сообщения: 2352
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Сайт будет способен динамически создавать закрытый ключ и соответствующий открытый ключ и Bitcoin адрес (много как bitaddress.org)

Не объясняет математику за ним, но пример этого находится в Javascript от источника HTML здесь:
 - http://BitAddress.org

[Update: Более подробная информация здесь?
 - http://bitcointalk.org/index.php?topic=3238.0
 - http://bitcointalk.org/index.php?topic=53177.0
 - ]
Стивен Gornick сейчас офлайн Пожаловаться на Stephen Gornick   Ответить с цитированием Мультицитирование сообщения от Stephen Gornick Быстрый ответ на сообщение Стивен Gornick

27 апреля 2012, 2:49:26 AM   # 8
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Это из Вот, и я не думаю, что он может быть использован для перехода от закрытого ключа к открытому ключу.

котировка
* @author theymos (функциональность)

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

27 апреля 2012, 7:09:55 PM   # 9
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Спасибо за ответы. Из того, что я прочитал, я понял, что:

Puk = G * ПрК

где PUK является открытым ключом, G есть множество (х, у) координаты для secp256k1 эллиптической кривой, которые являются, в шестнадцатеричном, (х = 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798, у = 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8), ПрК является секретным ключом, и * обозначает точку умножения.

Я, однако, возникают проблемы, реализующий точку умножения. Я прочитал статью вики Вот, и понимаю, что это в основном в два раза и добавить точку, но я не могу достаточно обернуть мою голову вокруг псевдокоде они дают. Может кто-нибудь помочь с этим? Я работаю в PHP, но ничего бы реально помочь.

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

28 апреля 2012, 3:04:44 AM   # 10
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Если у кого есть какие-либо проблемы тестирования я могу запустить для точечного умножения на secp256k1 кривой, было бы здорово. Я думаю, что у меня есть реализация вниз, но тот факт, что все находится в шестнадцатеричном дает мне подходит. Я хотел бы быть в состоянии проверить, что точка умножение работает в десятичной системе, прежде чем перейти к решению гекса.

Выполнение математических операций вручную, я знаю, что 2 * (4, 3) = (56, -419).
Но делать большие умножений вручную невозможно.
Например, 100 * (4, 3) =

И на самом деле делает точку умножения требуемого Bitcoin ...

Скажем PrivateKey (в шестнадцатеричном виде) = 059E2BF5E2C7A4098C164B29A91CF70508D2FD1A256A60656FD2593BDB980FAA
так PrivateKey в дес = 2541029483313867478679144795827841690699430215057902992954466247848698056618
Сх (в шестнадцатеричном) = 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798
так Сх в дес = 55066263022277343669578718895168534326250603453777594175500187360389116729240
Гр (в шестнадцатеричном) = 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
поэтому Гр в дес = 32670510020758816978083085130507043184471273380659243275938904335757337482424

поэтому, учитывая, что PrivateKey * (Gx, Gy) = ОткрытыйКлюч
математика (в десятичную): 2541029483313867478679144795827841690699430215057902992954466247848698056618 * (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424).

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

23 июня 2013, 11:12:53 PM   # 11
 
 
Сообщения: 202
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Поскольку этот поток приходит сверху при поиске Priv ключа для преобразования ключа паба, вот ссылка на автономный питон файл в котором вы можете увидеть все фоновые механики.

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

4 апреля 2016, 10:59:22 PM   # 12
 
 
Сообщений: 40
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Это старая тема.
Но только для людей, которые здесь земля и на самом деле хотят, чтобы понять, как код расчета от частного к открытому ключу
Глянь сюда:
http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript
thedrs сейчас офлайн Пожаловаться на thedrs   Ответить с цитированием Мультицитирование сообщения от thedrs Быстрый ответ на сообщение thedrs

5 апреля 2016, 4:20:02 AM   # 13
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: закрытый ключ Открытый ключ

Если Бэкэнд питон
https://github.com/weex/addrgen

Если это PHP
https://github.com/RobKohr/PHP-Bitcoin-Address-Creator

Если это nodejs
затем
Это старая тема.
Но только для людей, которые здесь земля и на самом деле хотят, чтобы понять, как код расчета от частного к открытому ключу
Глянь сюда:
http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW