問題タブ [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.
c# - Bouncy Castle ECDSA 秘密鍵から公開鍵を作成
C# でビットコイン トランザクションに署名しようとしています。完成させようとしているコードが 2 ビットあります。Bouncy Castle を使用して秘密鍵と公開鍵のセットを作成できます。これをウォレットのインポート形式に変換できます。
ECDSA 公開鍵からビットコイン アドレスを生成することもできます。
ただし、トランザクションに署名したいのですが、持っているのは自分の秘密鍵だけです。ウォレットにインポートして署名する必要はありません。では、秘密鍵だけが与えられた場合、どうすれば公開鍵を生成できますか?
これを行うJavaScriptメソッドを見つけました:
私が Bouncy Castle で見た唯一の方法は、ランダムなペアを生成することです。
android - java.security.SignatureException: 署名バイトのデコード中にエラーが発生しました
Android KitKat デバイス (Nexus 5) で署名を検証しようとすると、この例外が発生します。
KeyFactory
として EC アルゴリズムと署名インスタンスとして使用しますNONEwithECDSA
。
例外ログ:
誰でもこのエラーを克服する方法を説明できますか?
ruby - Ruby/openssl: 楕円曲線ポイントのオクテット文字列を OpenSSL::PKey::EC::Point に変換
ここで見つけた特定のメッセージの楕円曲線デジタル署名アルゴリズム (ECDSA) 署名をチェックする Ruby コードを作成しようとしています。
問題は、公開鍵のオクテット文字列をOpenSSL::PKey::EC::Pointオブジェクトに変換する方法がわからないことです。これを C で書いていた場合、オクテット文字列を OpenSSL の に渡すだけですo2i_ECPublicKey
。これは、私が望むことに近いことを行い、実際には参照実装によって使用されます。ただし、 Ruby (MRI)のソース コードを検索したところ、呼び出しが含まれてo2i_ECPublicKey
いないため、C 拡張を記述せずに Ruby からその関数を使用する方法がわかりません。
これは 16 進数のオクテット文字列です。これは、楕円曲線上の点の x 座標と y 座標を表す 2 つの 32 バイト整数が続く 0x04 バイトです。
OpenSSL::PKey::EC::Point
その文字列をRuby で inに変換する方法を知っている人はいますか? ポイントオブジェクトを取得したら、署名を検証すると思われる次のコードでそれを使用します。
アップデート:
Jay-Ar Poldario のおかげで、うまくいきました。これは、OpenSSL を使用して署名を検証する完全なコードです。また、ecdsaという gemを作成し、gem を使用して同じことを行う方法を示すコードを含めました。
OpenSSL が公開鍵を一時的に 1 つの BN (大きな数字) として表現するのは奇妙だと思います。実際には 2 つの大きな数字だからです。私の gem は、オクテット文字列 (SEC2 標準で定義されている) をECDSA::Point
オブジェクトに直接変換できます。
.net - Windows 証明書ストアから CngKey への ECC ベースの証明書のインポート
およびで使用するために、ECC ベースX509Certificate2
のから に公開/秘密鍵を取得するにはどうすればよいですか?CngKey
ECDsaCng
ECDiffieHellmanCng
現在、署名/暗号化に RSA 2048 ビット キー ペアを使用しています。X509Store
これを行うには、エクスポート不可としてマークされた秘密鍵を使用して、証明書が安全に保存されている場所から証明書を取得します。現在の実装を ECDSA と ECDH を使用するように変換して、同等のセキュリティのためにより小さいキー サイズを使用できるようにしたいと考えています。
openssl を使用して ECC 証明書を正常に生成しました。
openssl ecparam -out private.pem -name prime256v1 -genkey
openssl req -new -key private.pem -x509 -nodes -days 365 -out public.cer
openssl pkcs12 -export -in public.cer -inkey private.pem -out export.pfx
上記で生成された証明書を証明書ストアに正常にインストールしました。拇印でそれらを取得できますが、秘密鍵と公開鍵の暗号化プロバイダーは「アルゴリズムがサポートされていません」という例外をスローします。代わりに、使用ECDsaCng
しECDiffieHellmanCng
て署名/暗号化することになっていることを理解しています。しかし、これらは を扱いCngKey
ます。
秘密鍵をエクスポート可能にする必要があるため、Bouncy Castle はオプションではありません。
CLR SecurityCngKey
はペアを返しますGetCngPrivateKey
が、CLRSecurity によって返されるキーは ECDH キーであるため、ECDsa では使用できません。X509Certificate2
さらに、CLR セキュリティでは、署名の検証のために公開キーだけを取得する方法がありません (署名者の秘密キーを持っていないか、必要としない場合)。
何か案は?私は機知に富んでいます...どんな助けでも大歓迎です。
key - sha256 のマネーミスに対する助けが必要です
ECDSA 秘密鍵 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 を持っている
1 - 生成された対応する公開鍵を取得します
2 - 公開鍵 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408 に対して SHA-256 ハッシュを実行します。
しかし、0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E7723716103ABC11A1DF38855ED6F2EE187E9C586 で sha256 を実行すると
わからない
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
私が得るものは
32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce
私は何を間違っていますか?
php - ECC PHP ライブラリ
特定のPHPライブラリに関する詳細情報を見つけようとして何日も費やしましたが、成功しませんでした: https://github.com/mdanter/phpecc
誰もこれを使用する方法についての情報を持っていますか? 私がやりたいことは次のとおりです。
- 秘密鍵と公開鍵のペアを生成します。
- 指定された秘密鍵から公開鍵を取得します。
- 署名されたメッセージを確認します。
基本的に、PHP に相当するもの: http://kjur.github.io/jsrsasign/sample-ecdsa.html
signing - Javacard で ECDSA を使用して署名する方法
ECDSA を使用して署名コードを実装しようとしています。しかし、インストール フェーズ中に常にエラー SW (6F00) が発生します。パラメータを何度か変えてみました。(ex. ALG_EC_FP / ALG_EC_F2M, LENGTH_EC_FP_xxx / LENGTH_EC_F2M_xxx) 以下のコードの間違いを教えてください。(バージョン - JCDK 2.2.1、JDK 1.4.2)
私は JCOP カードとその仕様書を手に入れました。そのカードが仕様書で ECC をサポートしていることを読みました。しかし、仕様がカードの仕様であり、カードが本当にECCをサポートしているとは思えません。それを確認する方法はありますか???
前もって感謝します。
java - Javacard の ECDSA 署名
Javacard で ECDSA を使用して署名コードを実装しています。
私のコードは例外部分に 0x0003(NO_SUCH_ALGORITHM) を出力します。これは、このカードがアルゴリズムをサポートしていないことを意味します。私のベンダーがECCをサポートしていると私に言ったので、私はそれを理解していません. 私は、ECDSA で署名する方法がわからないという結論に達しました。それを知りたいのです。
ここに私の完全なソースコードがあります
APDU コマンドは次のとおりです。
私の開発環境は以下の通りです。
- OS:Windows7
- JCDK Ver 2.2.1
- JDK バージョン 1.4.2
- チップ:NXP
- 端末: ACR122 NFC 非接触スマート カード リーダー
ドメイン パラメータを設定するようにコードを変更しました。しかし、カードはまだ同じ結果 (0x0003) を出力します。これが私の完全なソースコードです。
java - secp256r1 曲線と SHA256 アルゴリズムを使用した ECDSA 署名の生成 - BouncyCastle
ECDSA と secp256r1 曲線 (P256) およびメッセージ ハッシュの SHA256 アルゴリズムを使用して署名を生成しようとしています。また、Bouncy Castle ライブラリを使用しています。以下のコード、
ここでは、キー ペアは KeyPair を使用して生成されますが、私の要件では、静的な privateKey と公開キーを使用します。また、署名の検証は常に false を返します。
ヘルプが必要です。静的な秘密鍵と検証部分を取得するにはどうすればよいですか。
c# - X509Certificate2 を使用して ECDSA-SHA256 署名に署名および検証する
を使用OpenSSL
して ECC 証明書を作成していSHA256
ました。これらの証明書を使用して、データに署名し、既存の署名を検証したいと考えています。
を使用してみましたが、またはDSACryptoServiceProvider
しかサポートしていません。SHA1
MD5
でも、ECDsaCng
サポートできるようECDSA-with-SHA256
です。X509Certificate2
私が抱えている唯一の問題は、秘密鍵と公開鍵を自分のものから必要なものに変換する方法がわからないことCngKey
です。誰かが公開鍵の変換方法を説明した別の質問を読みました。しかし、データに署名するには、秘密鍵も必要です。
CngKey
秘密鍵と公開鍵をから取得する方法はありX509Certificate2
ますか? 証明書はさまざまな形式で入手できます。私はそれらを PFX ファイルとして、また CER ファイルと PEM ファイルとして別々に持っています。
を.NET Framework 4
使い続けたいのですが、どうしても使えない場合は にも切り替えBouncy Castle
ます。