問題タブ [ecdsa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP での secp256k1 (ECDSA) の実装 (ビットコイン用)
熱心な支持者および/またはクローザーへ: これが SO のトピック外であると思われる場合は、この質問がより適切な他の StackExchange サイトを教えてください。
PHPでECDSA曲線secp256k1を実装するには?
というか、解決策はありますか?含まれる特殊なクラス - すでに完了していますか?
オープンソースのライブラリ、クラス、その他の言語 (JavaScript、Python など) で利用できるものがたくさんあることがわかりますが、PHP ソリューションの一部またはすべてをグーグルで検索したところ、何もありませんでした。.
これは私のビットコイン プロジェクトのためのもので、秘密鍵から公開鍵を生成する方法が必要です...そして、最終的なビットコイン アドレスを生成したいと考えています。
私は秘密鍵を生成する方法を知っており (ランダムかどうかは気にしないでください - ここでは問題ではありません)、256 ビットの 16 進数と WIF 表記の両方を持っています。しかし、次のステップ:公開鍵を考え出し、最終的なビットコイン アドレスを取得することは、私にとって一種の問題です。私は文字通り暗号のようなバックグラウンドがなく、解決策が secp256k1 を何らかの形で利用することであることを知っているからです。
これは私がこれまでに持っているものです:
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 でこれを完全に処理できるコードがないのはなぜですか? それともありますか?:)
python - paramiko の実行中に Python モジュール ecdsa エラーが発生する
paramiko モジュールをインストールしようとしています..以下のエラーで失敗します
paramiko のインストールを進める方法について何か提案はありますか?
signing - 送信者から圧縮された y 値を回復するにはどうすればよいですか?
私は次のシナリオに取り組んでいます:
- 秘密鍵と公開鍵を生成する
以下を使用して圧縮された公開鍵を生成します。
PublicKey.AccessGroupParameters().SetPointCompression(true)
一部のデータに署名し、圧縮された公開鍵で相手に送信します。
【相手側】公開鍵で署名を検証
ステップ 4 では、y 値を回復する必要があります。Crypto++ で使用できる API はありますか?
linux - BCryptSignHash 出力署名について
ECDSAアルゴリズムでBCryptSignHashを使用して、Windowsでハッシュ値に署名しました。出力署名バッファの長さは 64 バイトです。また、ハッシュに署名したBCryptGenerateKeyPair関数 (BCRYPT_ECDSA_P256_ALGORITHM アルゴリズム) を使用して公開鍵と秘密鍵のブロブを生成しました。
Linux でこの鍵ペアを使用して、この署名を検証する必要があります。リンクを使用して、生成された公開鍵と秘密鍵のペアを解読できます。 "そして、Linux でも同じものを使用できます。
生成される 64 バイトの署名は、理想的には署名ペア (r,s) ( http://en.wikipedia.org/wiki/Elliptic_Curve_DSA ) である必要があります。
Linux で署名ブロブの内容を (r,s) ペアにマップして検証できるように、生成された 64 バイトの署名を理解する方法はありますか?
または、Linux で生成された署名を検証する簡単な方法はありますか?
ありがとう
digital-signature - 検証機能なしでCrypto ++でECDSA署名を検証する方法は?
Crypto++ を使用して、ECDSA で Signer/Checker メカニズムを作成しました。
問題は、署名を確認したいときに、検証機能が機能しないことです。
署名を検証するためのより手動の方法を提案してもらえますか?
crypto++ - ポイント圧縮による公開鍵初期化APIはありますか?
私は CryptoPP をいじっていますが、この特定の質問に対する答えが見つかりません。これがサンプルソースコードです(部分的)
このようにして、コンポーネント値を使用して publicKey を生成できます。ただし、ポイント圧縮で動作させることができません。つまり、Qy 値がありません。それを行う方法はありますか? Initialize メソッドには 2 つのオーバーロードがありますが、いずれもポイント圧縮の状況には対応していません。
私の質問は、「PublicKey.Initialize(curve,G,n,Q)」の Crypto++ に固有のものです。現在のプロジェクトでは publicKey 全体を転送できないため、ドメイン パラメータをインデックス値として指定する必要があり、Qx 値のみを転送できます。したがって、「PublicKey.Initialize(curve,G,n,Q)」のようなものを使用して publicKey を初期化する必要がありますが、ポイント圧縮に関するそのような初期化 API が見つかりません。
というわけで、これは「ポイント圧縮のやり方」ではなく、「Qy 値を持たずに公開鍵を初期化する方法はありますか?」ということです。
go - ECDSA 秘密鍵を Go に保存する方法
メソッドを使用してecdsa.GenerateKey
、Go で秘密鍵と公開鍵のペアを生成しています。秘密鍵をユーザーのコンピューター上のファイルに保存し、プログラムが起動するたびにロードしたいと思います。公開鍵をマーシャリングする方法はありますがelliptic.Marshal
、秘密鍵についてはありません。単に自分でロールする必要がありますか、または秘密キーを保存するための推奨される方法はありますか?
encryption - ヤコビアン座標での楕円曲線の加算
素体上の楕円曲線に 2 つの点を追加して、これらの点をアフィン/アフィン座標から変換しようとしましたが、正しい結果を得ることができませんでした (テストしている曲線は a=0 です)。誰が何が悪いのか見ることができますか?
c# - BouncyCastle ESDSA の実装
BouncyCastle ライブラリを使用して C# で ECDSA を実装していますが、TestECDsa192bitPrime() の例を理解するのに苦労しています。
上記の例では、BouncyCastle が G( Basepoint) と Q( public key) を直接計算する方法を示しました。