問題タブ [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.
java - RFC テスト ベクトルに従って Java で ECDSA 署名を計算する
ikev2 プロトコルに関連するプログラムのテスト ハーネスを Java で作成しています。この一環として、ECDSA 署名を計算できるようにする必要があります (具体的には NIST P-256 曲線を使用)。
RFC 4754は、IKEv2 での ECDSA の使用について説明し、一連のテスト ベクトルを提供します (必要な p256 曲線を含む)。
次のコードを使用して、Java の ECDSA 署名実装を介して ECDSA-256 テスト ベクトル値 ( RFC のセクション 8.1 ) を実行しようとしています。
結果は次のようになります。
CB28E099 9B9C7715 FD0A80D8 E47A7707 9716CBBF 917DD72E 97566EA1 C066957C 86FA3BB4 E26CAD5B F90B7F81 899256CE 7594BB1E A0C89212 748BFF3B 3D5B0315
代わりに私は得る:
30460221 00dd9131 edeb5efd c5e718df c8a7ab2d 5532b85b 7d4c012a e5a4e90c 3b824ab5 d7022100 9a8a2b12 9e10a2ff 7066ff79 89aa73d5 ba37c868 8e 7d7fa6e 2e 613
長さの違いは、署名の Java ASN.1 エンコードが原因であることを知っています。しかし、残りの部分は完全に間違っており、その理由がわかりません。
どんな助けやアドバイスも大歓迎です!
PS私はECDSAまたはJava暗号の専門家ではないので、おそらく私が犯している愚かな間違いです
c - OpenSSL C ライブラリを使用して、複数のスレッドで楕円曲線キー ペア (EC_KEY_generate_key) を生成します。
多くの ec キーペアを生成したい。プロセスを少し高速化するために、このジョブに複数のスレッドを使用するようにアプリケーションを書き直しました。以下は、各スレッドがキーを生成する方法のコード スニペットです。
一見すると、すべてが正常に機能しているように見えました。i5 520m で 4 つのスレッドを使用すると、アプリケーションは 2 倍の速さで実行されました。しかし、その後 3 ~ 4 回の E6 キー生成の後、突然セグメンテーション違反が発生します。EC_KEY_generate_key 操作をロックすると、セグメンテーション違反はなくなりますが、複数のスレッドを使用する利点はなくなります。今私の質問。メモリを破損することなく、キーの作成を複数のスレッドに分割することは可能ですか? グーグルを使っても情報が見つかりませんでした。ただし、SSL ドキュメントでは、スレッド セーフについては何も言及されていません。どんな助けでも大歓迎です。どうも
openssl - ECDSA 秘密 16 進キーを公開キーに変換する
以下の 2 行を使用して、ECDSA 秘密鍵の 16 進数を生成しています。
それらの出力は次のようになります。
次に、その 16 進キーを使用して公開 ECDSA キーを生成するにはどうすればよいでしょうか?
どんな助けでも大歓迎です。
node.js - node.js で ECDSA キーを 16 進エンコードする
APIサーバーと通信するnodejsアプリを構築しています。API サーバーは、私が行う各リクエストに、 ECDSA 曲線と特定のデータ セットのハッシュX-Signature
を使用するヘッダーが含まれていることを要求します。prime256v1
sha256
cryptoとtlsのドキュメントを調べましたが、適切なものは見つかりませんでした。で秘密鍵を正常に生成しましopenssl ecparam -name prime256v1 -genkey
たが、PEM 形式です。DER 形式のキーも生成しました。これらには両方とも、使用される曲線や、PEM の場合はコメントなどの追加のメタデータが含まれます。
これらのキーを使用して署名操作を行うことができますが、サーバーでは、16 進エンコードを使用して公開キーをアップロードする必要があります (サーバーは、要求に対して行った署名を検証できます)。
具体的には、サーバーは次の Python コードの出力のようなものを必要としています。
pubkey の出力例 (改行なし):c5bd76cd0cd948de17a31261567d219576e992d9066fe1a6bca97496dec634e2c8e06f8949773b300b9f73fabbbc7710d5d6691e96bcf3c9145e15daf6fe07b9
ノードアプリへの依存関係としてPythonを追加したくない... PEMまたはDERファイルから秘密鍵を表すバイナリデータを抽出できる方法を知っている人がいるので、それをバッファに入れて呼び出すことができますbuffer.toString('hex')
か? または、ネイティブcrypto
ライブラリを使用して ECDSA キーペアを生成する方法はありますか? または同じことをするライブラリ?
java - ECDSA で基点の順序が長い短いハッシュを処理する方法
私は CVC 証明書を使用しています (聞いたことがない場合は、X509 のふりをしてください)、brainpool256r1 曲線と SHA1 ハッシュを使用した楕円曲線署名を使用しています。バウンシーキャッスルを使用したJavaでは、次のように確認するだけです。
そして、すべてがうまくいきます。ただし、組み込みデバイスでもそれらを検証する必要があり、ウィキペディア ECDSA の記事z
によると、少なくとも左端の 256 ビットのハッシュを使用して値を取得することになっているため、問題が発生しました。しかし、SHA1 には 160 ビットしかありません。
これは bouncycastle によってどのように解決されますか?また、これを処理する方法に関する一般的な理論はありますか?
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 はありますか?