SubtleCrypto: decrypt() メソッド
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
decrypt() は SubtleCrypto インターフェイスのメソッドで、暗号化されたデータを復号します。
引数として key、オプションの引数、復号するデータ(「暗号文」とも呼ばれます)を取ります。
これは、復号されたデータ(「平文」とも呼ばれます)で履行される Promise を返します。
構文
decrypt(algorithm, key, data)
引数
algorithm-
使用するアルゴリズムと、必要に応じて追加の引数を指定するオブジェクトです。 追加引数に指定された値は、対応する
encrypt()呼び出しに渡された値と一致しなければなりません。- RSA-OAEP を使用するには、
RsaOaepParamsを渡してください。 - AES-CTR を使用するには、
AesCtrParamsを渡してください。 - AES-CBC を使用するには、
AesCbcParamsを渡してください。 - AES-GCM を使用するには、
AesGcmParamsを渡してください。
- RSA-OAEP を使用するには、
key-
復号に使用するキーを格納した
CryptoKeyオブジェクト。 RSA-OAEP を用いる場合、これはCryptoKeyPairオブジェクトのprivateKeyプロパティとなります。 data-
ArrayBuffer、TypedArray、DataViewのいずれかで、復号するデータ(暗号文 とも呼ばれます)を格納します。
返値
平文を格納した ArrayBuffer で履行される Promise です。
例外
以下の例外が発生した場合、プロミスは拒否されます。
InvalidAccessErrorDOMException-
リクエストされた処理が指定された鍵に対して有効でない場合に発生します(無効な暗号化アルゴリズムや、指定した暗号化アルゴリズムに対して無効な鍵など)。
OperationErrorDOMException-
その演算処理固有の理由(アルゴリズム引数のサイズが不正、暗号文の復号にエラーがあったなど)で失敗した場合に発生します。
対応しているアルゴリズム
decrypt() メソッドは、 encrypt() メソッドと同じアルゴリズムに対応しています。
例
メモ: GitHub 上の動作例を試してみてください。
RSA-OAEP
このコードは RSA-OAEP を用いて ciphertext を復号します。完全なコードは GitHub で参照してください。
function decryptMessage(privateKey, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "RSA-OAEP" },
privateKey,
ciphertext,
);
}
AES-CTR
このコードは ciphertext を、 CTR モードの AES を使用して復号します。
counter は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。
function decryptMessage(key, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "AES-CTR", counter, length: 64 },
key,
ciphertext,
);
}
AES-CBC
このコードは ciphertext を、 CBC モードの AES を使用して復号します。 iv は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。
function decryptMessage(key, ciphertext) {
// iv 値は暗号化に使用した値と同じ
return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}
AES-GCM
このコードは ciphertext を、 GCM モードで AES を用いて復号します。 iv は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。
function decryptMessage(key, ciphertext) {
// iv 値は暗号化に使用した値と同じ
return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}
仕様書
| Specification |
|---|
| Web Cryptography Level 2> # SubtleCrypto-method-decrypt> |
ブラウザーの互換性
Loading…
関連情報
SubtleCrypto.encrypt()- RFC 3447 は RSAOAEP を定義しています。
- NIST SP800-38A は CTR モードを定義しています。
- NIST SP800-38A は CBC モードを定義しています。
- NIST SP800-38D は GCM モードを定義しています。
- FIPS 198-1 は HMAC を定義しています。