Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Алгоритм получения адреса Биткоин

Ответить
Настройки темы
C/C++ - Алгоритм получения адреса Биткоин

Аватара для Apock

Пользователь


Сообщения: 72
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: Apock
Дата: 05-06-2019
Всем доброго времени суток. Начал понемногу разбираться в криптографии и для начала решил воспроизвести процесс получения биткоин-адреса из приватного ключа. Алгоритм взял отсюда.
Ну и дальше так:
Код: Выделить весь код
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();
SHA2 выдаёт результат не совпадающий со схемой на сайте. Проверил через сайт с онлайн-хэшами - результат как у меня. Но биткоиновцы походу получают его как-то по другому.
Где-то наткнулся на то, что надо хэшировать не шестнадцатеричную строку, а байтовый массив сжатого ключа. Вот только как его хэшировать так и не понял.
Сделал так
Код: Выделить весь код
key = THashSHA2::GetHashString(*compressed_public_key);
, но результат опять не тот.
Вот здесь при запросе Binary Hash получаю то, что нужно.
Может кто сталкивался, подскажите.

-------
Говорят, что производители чипсетов не стоят на месте. Чушь. Как стоял завод корпорации 3dfx на перекрёстке 7-й авеню и 6-й дежавю, так и стоит.


Отправлено: 23:00, 04-06-2019

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Алгоритм получения адреса Биткоин

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Биткоин разделился надвое 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




 
Переход