Реализация secp256k1 (ECDSA) в PHP (для биткойнов)

Для увлеченных пользователей и / или близких: если вы считаете, что это не является темой для SO, пожалуйста, укажите мне другой сайт StackExchange, где этот вопрос был бы более уместным.


Как реализовать кривую ECDSA secp256k1 в PHP?

Или скорее: есть ли решения - т.е. включаемые специализированные классы - уже сделано?

Я вижу, что существует множество библиотек с открытым исходным кодом, классов и других материалов, доступных для других языков (JavaScript, Python,...), но я потратил целый день на поиски какого-либо / любого решения PHP и... ничего!,

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

Я знаю, как генерировать закрытый ключ (не беспокойтесь о том, что он случайный или нет - здесь это не проблема), и у меня есть и 256-битные шестнадцатеричные, и WIF-нотации. Но следующий шаг: создание открытого ключа, а затем окончательного адреса биткойна, является для меня проблемой, так как у меня буквально нулевой фон криптографии и я знаю, что решение состоит в том, чтобы каким-то образом использовать secp256k1.

Это то, что я до сих пор:

// Random bytes
// $private_key = bin2hex(openssl_random_pseudo_bytes(32));
// But using brainwallet.org style to have easy comparison
$passphrase = "correct horse battery staple";
$private_key = hash('sha256', $passphrase);
var_dump ("PrivKey: $private_key");
// Bitcoin::privKeyToWIF from github.com/mikegogulski/bitcoin-php
$wif = Bitcoin::privKeyToWIF($private_key); 
var_dump ("WIF PrivKey: $wif");
// And now I don't know where to even start ...

tl; dr Как реализовать это в PHP? (..и privKey->pubKey преобразование до этого)

Я знаю о...

  • http://github.com/mikegogulski/bitcoin-php. Это довольно изящно и содержит много полезных методов и способов управления биткойндом через RPC, но, к сожалению, отсутствует чистый метод PHP, который может обрабатывать механизм privKey->pubKey.
  • http://bitcoinphp.com/.. Я не смог найти его там.
  • Расширение openssl в PHP, но, к сожалению, в документации OPENSSL-PHP упоминается только "ecdsa-with-SHA1", и исправьте меня, если я ошибаюсь, но мне нужен ecdsa-with-SHA256 или что-то в этом роде. как это (?)
  • Я даже пытался преобразовать алгоритм из bitcoinjs.js, но с помощью своих крипто-знаний я не смог извлечь суть чего-либо. Я просто не понимаю эти кривые, их битовые операции и другие жуткие вещи.

Я ищу решение PURE PHP. Я не ищу использовать оболочку с запущенным биткойном, а затем анализировать JSON для пар ключей и затем...

Почему нет кода, который мог бы полностью справиться с этим на PHP? ИЛИ ТАМ?!:)

0 ответов

Другие вопросы по тегам