![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Алгоритм получения адреса Биткоин |
|
C/C++ - Алгоритм получения адреса Биткоин
|
![]() Пользователь Сообщения: 75 |
Всем доброго времени суток. Начал понемногу разбираться в криптографии и для начала решил воспроизвести процесс получения биткоин-адреса из приватного ключа. Алгоритм взял отсюда.
Ну и дальше так: UnicodeString key = "18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725", chsum; uint8_t private_key[32] = {0}; uint8_t eliptic_public_key[64] = {0}; uint8_t compressed_public_key[33] = {0}; //Заполняем private_key десятичными значениями char h[2]={'0'}; int i=0; while(key.Length()!=0) { h[0]=key[1]; h[1]=key[2]; key.Delete(1,2); private_key[i] = xtodec(h); i++; } //вычисляем публичный ключ через ECDSA const uECC_Curve_t * curve; curve = uECC_secp256k1(); uECC_compute_public_key(private_key, eliptic_public_key, curve); key = ""; for(i=0; i<64; i++) key += dectox(eliptic_public_key[i]); //преобразуем в сжатый формат публичного ключа uECC_compress(eliptic_public_key, compressed_public_key, curve); key=""; for(i=0; i<33; i++) key += dectox(compressed_public_key[i]); //шифрование публичного ключа key = THashSHA2::GetHashString(key); RIPEMD_160 hash; std::string stdLine(AnsiString(key).c_str()); hash.message = stdLine; stdLine = hash.ripemd_160(); key = stdLine.c_str(); Где-то наткнулся на то, что надо хэшировать не шестнадцатеричную строку, а байтовый массив сжатого ключа. Вот только как его хэшировать так и не понял. Сделал так , но результат опять не тот. Вот здесь при запросе Binary Hash получаю то, что нужно. Может кто сталкивался, подскажите. |
|
------- Отправлено: 23:00, 04-06-2019 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Биткоин разделился надвое | OSZone News | Новости информационных технологий | 0 | 02-08-2017 11:30 | |
PowerShell - [блог] Делегирование Get-RemoteAccessConnectionStatistics для получения VPN-адреса кл | Kazun | Скриптовые языки администрирования Windows | 0 | 08-11-2016 20:30 | |
V. 2010 - Маска для адреса получения | goog2e@vk | Microsoft Exchange Server | 0 | 18-06-2015 21:48 | |
[решено] Перезагрузка с критической ошибкой после получения сетевого адреса | mily | Лечение систем от вредоносных программ | 6 | 23-10-2014 16:21 | |
Размещения сайта биткоин! Выбор хостинга! | clop1000 | Флейм | 3 | 19-07-2014 08:59 |
|