問題タブ [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 投票する
2 に答える
5233 参照

javascript - CryptoKey を LocalStorage に保存するには?

既存のプロジェクトで Web 暗号化 API を使用したいと考えています。何かを暗号化および復号化するには、CryptoKey を使用する必要がありますが、CryptoKey を localStorage に保存すると、オブジェクトではなく文字列 (CryptoKey) のみが保存されます。

CryptoKey を単純な型 (文字列) でシリアル化/変換することは可能ですか?

私の解読方法は

もちろん、エラーメッセージは次のとおりです。

'SubtleCrypto' で 'decrypt' を実行できませんでした: パラメータ 2 はタイプ 'CryptoKey' ではありません。2localStorageHandler.js:39 CryptoPromise[オブジェクト暗号鍵]

localStorage を使用せずに復号化すると、データの暗号化に問題はありません。

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

javascript - ダイジェストは異なるデータで同じ値を返します

私は Javascript Forge を使用して一部のデータのダイジェストを取得しています。現在、実験はさまざまなドキュメントで行われており、次のコード行は常に同じハッシュを返します。

なぜこうなった?何か不足していますか?

さまざまなブラウザで試してみましたが、まだ同じ digestHash 値です

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

javascript - 暗号 ECDH 公開鍵を解析して JWK 形式に変換し、WebCrypto で使用する

ECDH 鍵ペアを生成し、そこから公開鍵を取得しました。nodejs と crypto ライブラリを使用します。

この公開鍵、ECDH アルゴリズム、および WebCrypto のSubtleCryptoインターフェイスを使用してデータを暗号化するクライアント側ライブラリを実装しています。

これを達成するには、公開鍵 (nodejs 暗号で生成された) をインポートする必要があります。jwk他のものよりも使用されていることに気付きました。

の例jwk

では、公開鍵をjwkオブジェクトに解析するにはどうすればよいですか。私の公開鍵は次のようになります。 04f8b2a6e9d2ffa424c3e7b6addf23112153920fd0209390da460f99e03bf8665052e72df4a0b7927381f1b026c98a3a2b348fdd10969875e6b0e86cb1f093a5fc07e49fbbbf091922ce71af17f4a79de03f6069836a7143b137be34451f162235

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

javascript - Web アプリケーションでクライアント側の暗号化を使用する場合、キーはどこに保存する必要がありますか?

JavaScript Web Crypto APIを使用してクライアント側の暗号化を Web アプリケーションに追加したいとします。私のアプリケーションのクライアント側は、暗号化されたデータをサーバーに送信する前にキーを使用して各ユーザーのデータを暗号化し、サーバーから返されたデータを復号化して表示します。

ユーザーは、このようなアプリケーションの鍵を、使いにくくすることなく、どのように保管するのでしょうか?

キーをブラウザに保存する簡単な方法はありますか?

または、各ユーザーは自分のコンピューターのローカル ファイルにキーを保持し、ログインするたびにそれを Web アプリにインポートする必要がありますか? Apple Keychain のような別のパスワード マネージャーを使用できますか?

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

javascript - IE11 の Web Worker から MSCrypto にアクセスできますか?

IE11 の Web Crypto は の中にありますがwindow.msCrypto、Firefox や Chrome の場合は でアクセスできますwindow.crypto

Web Worker はコンテキストにアクセスできませんwindowが、ありがたいことに、Chrome と Firefox もcryptoWeb Worker コンテキストで変数を公開します (したがって、グローバル レベルではthis.crypto、Web Worker の Web Crypto スイートにアクセスするために使用できます)。ただし、IE11 はWeb Worker コンテキストで公開していないようです。this.msCrypto

あれは正しいですか?IE11 Web Worker で Web Crypto を使用する方法はありますか?

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

javascript - Javascript - USB トークンからのキー/証明書

JavaScript を使用して、 USB トークンまたはBrowser に保存されている証明書からキーを取得することはまだ不可能かどうかを尋ねたいと思います。WebCryptoApiではそれができないという多くの記事を読んでいました。

トークンからキーを取得するオプションはありますか? もしかして何か変わった?

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

javascript - CryptoKey ArrayBuffer から base64 へと戻る

私はこの問題をどのように解決するのだろうと思っていました。WebCrypto API を使用して RSA-OAEP キーペアを生成し、ArrayBuffer としてエクスポートするキーペアから pkcs8 の秘密キーをエクスポートし、この ArrayBuffer を base64 にエンコードして、PEM として保存できるようにします。

このテスト例では、鍵を pkcs8 としてエクスポートし、この pkcs8 を CryptoKey にインポートしています。問題は、機能する場合と機能しない場合があることです。

これらはコードの結果です: 注: これらの状態の 1 つだけが一度に発生するわけではありません。注 2: この例には、-----BEGIN PRIVATE KEY----- プレフィックスとサフィックスは含まれていません。キーのみをエンコードしています。

Case1: Uncaught (in promise) URIError: 不正な URI (…)b64DecodeUnicode @ try.php:20b64toab @ try.php:70wayBack @ try.php:66(anonymous function) @ try.php:56

Case2: undefined:1 Uncaught (in promise) DOMException

ケース 3: OK - ずっと機能します。

エラーの原因はわかりませんが、base64 エンコーディングと関係があると思います。私が言ったように、秘密鍵がOKを生成する場合とそうでない場合があります。

事前にご協力いただき、誠にありがとうございました。

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

android - Web Crypto API crypto.subtle が Apache Cordova で定義されていません

私は Cordova とforge ライブラリとブラウザのWeb Crypto APIを使用して署名importKey操作を実行しています。それにもかかわらず、Android デバイスの Web Crypto API はcrypto.getRandomValues()のみを提供し、SubtleCrypto は定義されていません (crypto.subtle)。したがって、Web Crypto API shrimとその依存関係であるPromizを追加すると、この参照の欠落が修正されると考えましたが、何も変わっていません。何かアイデアはありますか?

Chrome 52.0.2743.116 の PC でのデバッグは完全な Web Crypto API を提供しますが、Android 4.4.4 を搭載した Chrome バージョン 52.0.2743.98 を搭載した Android デバイスでは. Web API は crypto.getRandomValues() のみに制限されています。

私は基本的にHow to load a PKCS#12 Digital Certificate with Javascript WebCrypto APIからの回答を書き直しています

コード例:

index.html の内部

JavaScriptファイル内

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

safari - SubtleCrypto キーペアを Safari の永続ストレージに保存する方法

SubtleCrypto apiを使用して公開鍵と秘密鍵を作成しました。私はwebcrypto-shimを使用して、Safariで実装されていない微妙な方法のいくつかを克服しています。キーペアを生成し、それを使用してデータに署名できます。

次に、キーペアを IndexedDB に保存しようとしましたが、保存トランザクションが成功したようで、エラーはありません。しかし、署名のために公開鍵を再度使用したい場合は、まずIndexedDBから取得してから使用SubtleCrypto.exportKey()しますが、エラーで失敗します

TypeError: 型エラー

私はSafariデスクトップ9.1.2で動作させようとしています.IndexedDBShimも使用しています.

保存が実際には機能せず、キーが IndexedDB に適切に保存されていないと思われます。保存トランザクションでは、キーをエクスポートせずに保存します。つまり、取得したオブジェクトを保存していますSubtleCrypto.generateKey()

もう 1 つのことは、同じコードが Chrome でも機能することです。