問題タブ [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.

0 投票する
3 に答える
6999 参照

c# - Bouncy Castle ECDSA 秘密鍵から公開鍵を作成

C# でビットコイン トランザクションに署名しようとしています。完成させようとしているコードが 2 ビットあります。Bouncy Castle を使用して秘密鍵と公開鍵のセットを作成できます。これをウォレットのインポート形式に変換できます。

ECDSA 公開鍵からビットコイン アドレスを生成することもできます。

ただし、トランザクションに署名したいのですが、持っているのは自分の秘密鍵だけです。ウォレットにインポートして署名する必要はありません。では、秘密鍵だけが与えられた場合、どうすれば公開鍵を生成できますか?

これを行うJavaScriptメソッドを見つけました:

私が Bouncy Castle で見た唯一の方法は、ランダムなペアを生成することです。

0 投票する
0 に答える
607 参照

android - java.security.SignatureException: 署名バイトのデコード中にエラーが発生しました

Android KitKat デバイス (Nexus 5) で署名を検証しようとすると、この例外が発生します。

KeyFactoryとして EC アルゴリズムと署名インスタンスとして使用しますNONEwithECDSA

例外ログ:

誰でもこのエラーを克服する方法を説明できますか?

0 投票する
2 に答える
3477 参照

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オブジェクトに直接変換できます。

0 投票する
1 に答える
3202 参照

.net - Windows 証明書ストアから CngKey への ECC ベースの証明書のインポート

およびで使用するために、ECC ベースX509Certificate2のから に公開/秘密鍵を取得するにはどうすればよいですか?CngKeyECDsaCngECDiffieHellmanCng

現在、署名/暗号化に RSA 2048 ビット キー ペアを使用しています。X509Storeこれを行うには、エクスポート不可としてマークされた秘密鍵を使用して、証明書が安全に保存されている場所から証明書を取得します。現在の実装を ECDSA と ECDH を使用するように変換して、同等のセキュリティのためにより小さいキー サイズを使用できるようにしたいと考えています。

openssl を使用して ECC 証明書を正常に生成しました。

  1. openssl ecparam -out private.pem -name prime256v1 -genkey
  2. openssl req -new -key private.pem -x509 -nodes -days 365 -out public.cer
  3. openssl pkcs12 -export -in public.cer -inkey private.pem -out export.pfx

上記で生成された証明書を証明書ストアに正常にインストールしました。拇印でそれらを取得できますが、秘密鍵と公開鍵の暗号化プロバイダーは「アルゴリズムがサポートされていません」という例外をスローします。代わりに、使用ECDsaCngECDiffieHellmanCngて署名/暗号化することになっていることを理解しています。しかし、これらは を扱いCngKeyます。

秘密鍵をエクスポート可能にする必要があるため、Bouncy Castle はオプションではありません。

CLR SecurityCngKeyはペアを返しますGetCngPrivateKeyが、CLRSecurity によって返されるキーは ECDH キーであるため、ECDsa では使用できません。X509Certificate2さらに、CLR セキュリティでは、署名の検証のために公開キーだけを取得する方法がありません (署名者の秘密キーを持っていないか、必要としない場合)。

何か案は?私は機知に富んでいます...どんな助けでも歓迎です。

0 投票する
1 に答える
220 参照

key - sha256 のマネーミスに対する助けが必要です

ECDSA 秘密鍵 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 を持っている

1 - 生成された対応する公開鍵を取得します

2 - 公開鍵 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408 に対して SHA-256 ハッシュを実行します。

しかし、0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E7723716103ABC11A1DF38855ED6F2EE187E9C586 で sha256 を実行すると

わからない

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

私が得るものは

32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce

私は何を間違っていますか?

0 投票する
1 に答える
2883 参照

php - ECC PHP ライブラリ

特定のPHPライブラリに関する詳細情報を見つけようとして何日も費やしましたが、成功しませんでした: https://github.com/mdanter/phpecc

誰もこれを使用する方法についての情報を持っていますか? 私がやりたいことは次のとおりです。

  1. 秘密鍵と公開鍵のペアを生成します。
  2. 指定された秘密鍵から公開鍵を取得します。
  3. 署名されたメッセージを確認します。

基本的に、PHP に相当するもの: http://kjur.github.io/jsrsasign/sample-ecdsa.html

0 投票する
1 に答える
1037 参照

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をサポートしているとは思えません。それを確認する方法はありますか???

前もって感謝します。

0 投票する
2 に答える
3858 参照

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) を出力します。これが私の完全なソースコードです。

0 投票する
2 に答える
16369 参照

java - secp256r1 曲線と SHA256 アルゴリズムを使用した ECDSA 署名の生成 - BouncyCastle

ECDSA と secp256r1 曲線 (P256) およびメッセージ ハッシュの SHA256 アルゴリズムを使用して署名を生成しようとしています。また、Bouncy Castle ライブラリを使用しています。以下のコード、

ここでは、キー ペアは KeyPair を使用して生成されますが、私の要件では、静的な privateKey と公開キーを使用します。また、署名の検証は常に false を返します。

ヘルプが必要です。静的な秘密鍵と検証部分を取得するにはどうすればよいですか。

0 投票する
1 に答える
2024 参照

c# - X509Certificate2 を使用して ECDSA-SHA256 署名に署名および検証する

を使用OpenSSLして ECC 証明書を作成していSHA256ました。これらの証明書を使用して、データに署名し、既存の署名を検証したいと考えています。

を使用してみましたが、またはDSACryptoServiceProviderしかサポートしていません。SHA1MD5

でも、ECDsaCngサポートできるようECDSA-with-SHA256です。X509Certificate2私が抱えている唯一の問題は、秘密鍵と公開鍵を自分のものから必要なものに変換する方法がわからないことCngKeyです。誰かが公開鍵の変換方法を説明した別の質問を読みました。しかし、データに署名するには、秘密鍵も必要です。

CngKey秘密鍵と公開鍵をから取得する方法はありX509Certificate2ますか? 証明書はさまざまな形式で入手できます。私はそれらを PFX ファイルとして、また CER ファイルと PEM ファイルとして別々に持っています。

.NET Framework 4使い続けたいのですが、どうしても使えない場合は にも切り替えBouncy Castleます。