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 July 2015.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (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
です。
例外
以下の例外が発生した場合、プロミスは拒否されます。
InvalidAccessError
DOMException
-
リクエストされた処理が指定された鍵に対して有効でない場合に発生します(無効な暗号化アルゴリズムや、指定した暗号化アルゴリズムに対して無効な鍵など)。
OperationError
DOMException
-
その演算処理固有の理由(アルゴリズム引数のサイズが不正、暗号文の復号にエラーがあったなど)で失敗した場合に発生します。
対応しているアルゴリズム
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 API # SubtleCrypto-method-decrypt |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
SubtleCrypto.encrypt()
- RFC 3447 は RSAOAEP を定義しています。
- NIST SP800-38A は CTR モードを定義しています。
- NIST SP800-38A は CBC モードを定義しています。
- NIST SP800-38D は GCM モードを定義しています。
- FIPS 198-1 は HMAC を定義しています。