問題タブ [webcrypto-api]

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 に答える
5076 参照

node.js - Node.js と WebCrypto の間の ECDSA 署名は互換性がないように見えますか?

Node.js での署名 + 検証に次の例を使用しています: https://github.com/nodejs/node-v0.x-archive/issues/6904。検証は Node.js では成功しますが、WebCrypto では失敗します。同様に、WebCrypto を使用して署名されたメッセージは、Node.js での検証に失敗します。

これは、WebCrypto を使用して Node.js スクリプトから生成された署名を検証するために使用したコードです - https://jsfiddle.net/aj49e8sj/。Chrome 54.0.2840.27 と Firefox 48.0.2 の両方でテスト済み

SHA-1 の代わりに SHA-256 を使用した同様の問題に関する関連質問: Node.js/crypto を使用した ECDSA 署名の生成

私がチェックしたこと:

  • Node.js キーをデコードし、WebCrypto 経由で生成されたキーと同じ OID を持っていることを確認しました。これは、正しい曲線を使用していることを示しています。
  • SHA-1 は、両方の場所で使用するハッシュとして明示的に識別されます。
  • ECDSA は、Node.js と WebCrypto の両方で明示的に識別されます。

Node.js から受信した署名を正常に検証するにはどうすればよいですか? またその逆も同様です - WebCrypto から生成された Node.js の署名を検証するにはどうすればよいですか? それとも、標準の実装が微妙に異なり、互換性がないのでしょうか?

編集:

  • WebCrypto 署名 (64 バイト): uTaUWTfF+AjN3aPj0b5Z2d1HybUEpV/phv/P9RtfKaGXtcYnbgfO43IRg46rznG3/WnWwJ2sV6mPOEnEPR0vWw==
  • Node.js 署名 (71 バイト): MEUCIQDkAtiomagyHFi7dNfxMrzx/U0Gk/ZhmwCqaL3TimvlswIgPgeDqgZNqfR5/FZZASYsczUAhGSXjuycLhWnvk20qKc=

確認済みの Node.js 署名は DER エンコードされており、WebCrypto 署名はエンコードされていません。

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

digital-signature - Web ページでトークン証明書を使用するにはどうすればよいですか?

ブラウザからのトークン証明書を使用してデータに署名したいと考えています。トークンをプラグインすると、Windows 証明書ストアで証明書にアクセスできますが、ブラウザーから証明書にアクセスできません。

Web Crypto APIを見てみましたが、これには機能がありません。これを行う方法はありますか?

ありがとう

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

angularjs - Angular JS 暗号化。pbkdf2 と反復

文字列を sha512 と反復回数で PBKDF2 に変換したいと考えています。「pbkdf2」モジュールを使用してnodejsで行いました。angular JSで同じことを達成するにはどうすればよいですか。

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

javascript - AES-GCM を使用して IE 11 暗号化操作の結果からデータを復号化する方法

Windows 10 で IE 11 を使用して AES-GCM で一部のデータを暗号化できましたが、復号化が機能しません。暗号化 JS コードの例:

結果の項目 (encResult) は AesGcmEncryptResult であり、暗号化された値とタグが 2 つの異なるプロパティにあります。私が理解しているように、次のように、これらを連結し、復号化する暗号テキストとして渡す必要があります。

次に、oncomplete と onerror と onerror の発火を接続します。残念ながら、IE の Event オブジェクトには、type = "error" 以外に何もわかりません。

IE 11 での AES-GCM の使用に関する Web 上の情報はほとんどありません。

別のブラウザを使用するように言わないでください。これはすべて、Chrome と Firefox で正常に動作します (ただし、動作が異なります)。私は特にこれをIE 11で動作させようとしています。

私は何が欠けていますか?

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

javascript - Web Crypto を使用して PEM キーをインポートする

CryptoKey を PEM スタイルにエクスポートしましたが、インポートして戻したいと考えています。次のコードを使用してキーを生成しました。

そして、次のコードを使用して、文字列 (pem スタイル) の秘密鍵をインポートしようとしています。

残念ながら、次のエラーが返されます。

アップデート

convertPemToBinary 関数

convertPemToBinary 関数で使用されるサブ関数: