問題タブ [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.
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 署名はエンコードされていません。
digital-signature - Web ページでトークン証明書を使用するにはどうすればよいですか?
ブラウザからのトークン証明書を使用してデータに署名したいと考えています。トークンをプラグインすると、Windows 証明書ストアで証明書にアクセスできますが、ブラウザーから証明書にアクセスできません。
Web Crypto APIを見てみましたが、これには機能がありません。これを行う方法はありますか?
ありがとう
angularjs - Angular JS 暗号化。pbkdf2 と反復
文字列を sha512 と反復回数で PBKDF2 に変換したいと考えています。「pbkdf2」モジュールを使用してnodejsで行いました。angular JSで同じことを達成するにはどうすればよいですか。
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で動作させようとしています。
私は何が欠けていますか?
javascript - Web Crypto を使用して PEM キーをインポートする
CryptoKey を PEM スタイルにエクスポートしましたが、インポートして戻したいと考えています。次のコードを使用してキーを生成しました。
そして、次のコードを使用して、文字列 (pem スタイル) の秘密鍵をインポートしようとしています。
残念ながら、次のエラーが返されます。
アップデート
convertPemToBinary 関数
convertPemToBinary 関数で使用されるサブ関数: