8

熱心な支持者および/またはクローザーへ: これが SO のトピック外であると思われる場合は、この質問がより適切な他の StackExchange サイトを教えてください。


PHPでECDSA曲線secp256k1を実装するには?

というか、解決策はありますか?含まれる特殊なクラス - すでに完了していますか?

オープンソースのライブラリ、クラス、その他の言語 (JavaScript、Python など) で利用できるものがたくさんあることがわかりますが、PHP ソリューションの一部またはすべてをグーグルで検索したところ、何もありませんでした。.

これは私のビットコイン プロジェクトのためのもので、秘密鍵から公開鍵を生成する方法が必要です...そして、最終的なビットコイン アドレスを生成したいと考えています

私は秘密鍵を生成する方法を知っており (ランダムかどうかは気にしないでください - ここでは問題ではありません)、256 ビットの 16 進数と 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://i.stack.imgur.com/U2neg.png

私は知っている...

  • http://github.com/mikegogulski/bitcoin-php ..これはかなりきちんとしていて、RPC 経由でbitcoindを制御するための便利なメソッドと方法がたくさんありますが、残念ながらprivKey->pubKeyメカニズムを処理できる純粋な PHP メソッドがありません。
  • http://bitcoinphp.com/ ..そこには見つかりませんでした。
  • 残念ながら、OPENSSL-PHP ドキュメントで言及されている唯一のダイジェスト メソッドは「ecdsa-with-SHA1」です。間違っている場合は修正してください。ただし、「ecdsa-with-SHA256」または何かが必要ですそんな(?)
  • アルゴリズムをbitcoinjs.jsから変換しようとさえしましたが、私の暗号知識では要点を抽出できませんでした。私は単にそれらの曲線とそのビット操作、およびその他の不気味なものを理解していません。

PURE PHP ソリューションを探しています。bitcoind を実行しているシェルを使用してから、JSON を解析してキーペアを探しているわけではありません。

PHP でこれを完全に処理できるコードがないのはなぜですか? それともありますか?:)

4

0 に答える 0