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 を返します。

構文

js
decrypt(algorithm, key, data)

引数

algorithm

使用するアルゴリズムと、必要に応じて追加の引数を指定するオブジェクトです。 追加引数に指定された値は、対応する encrypt() 呼び出しに渡された値と一致しなければなりません。

key

復号に使用するキーを格納した CryptoKey オブジェクト。 RSA-OAEP を用いる場合、これは CryptoKeyPair オブジェクトの privateKey プロパティとなります。

data

ArrayBufferTypedArrayDataView のいずれかで、復号するデータ(暗号文 とも呼ばれます)を格納します。

返値

平文を格納した ArrayBuffer で履行される Promise です。

例外

以下の例外が発生した場合、プロミスは拒否されます。

InvalidAccessError DOMException

リクエストされた処理が指定された鍵に対して有効でない場合に発生します(無効な暗号化アルゴリズムや、指定した暗号化アルゴリズムに対して無効な鍵など)。

OperationError DOMException

その演算処理固有の理由(アルゴリズム引数のサイズが不正、暗号文の復号にエラーがあったなど)で失敗した場合に発生します。

対応しているアルゴリズム

decrypt() メソッドは、 encrypt() メソッドと同じアルゴリズムに対応しています。

メモ: GitHub 上の動作例を試してみてください

RSA-OAEP

このコードは RSA-OAEP を用いて ciphertext を復号します。完全なコードは GitHub で参照してください。

js
function decryptMessage(privateKey, ciphertext) {
  return window.crypto.subtle.decrypt(
    { name: "RSA-OAEP" },
    privateKey,
    ciphertext,
  );
}

AES-CTR

このコードは ciphertext を、 CTR モードの AES を使用して復号します。 counter は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。

js
function decryptMessage(key, ciphertext) {
  return window.crypto.subtle.decrypt(
    { name: "AES-CTR", counter, length: 64 },
    key,
    ciphertext,
  );
}

AES-CBC

このコードは ciphertext を、 CBC モードの AES を使用して復号します。 iv は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。

js
function decryptMessage(key, ciphertext) {
  // iv 値は暗号化に使用した値と同じ
  return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}

AES-GCM

このコードは ciphertext を、 GCM モードで AES を用いて復号します。 iv は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。

js
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

関連情報