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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
decrypt

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
Has more compatibility info.

関連情報