SubtleCrypto:decrypt() 方法

基线 广泛可用

此功能已得到良好确立,并在许多设备和浏览器版本中都能正常工作。它自以下日期起在浏览器中可用: 2015 年 7 月.

安全上下文:此功能仅在安全上下文(HTTPS)中可用,且仅在部分或全部支持的浏览器中可用。

decrypt()SubtleCrypto 接口的一个方法,用于解密一些已加密的数据。它接受一个用于解密的密钥、一些可选的额外参数以及要解密的数据(也称为“密文”)作为参数。它返回一个Promise,该 Promise 将以解密后的数据(也称为“明文”)作为结果完成。

语法

js
decrypt(algorithm, key, data)

参数

algorithm

一个对象,指定要使用的算法以及任何所需的额外参数。为额外参数提供的值必须与传递给相应encrypt() 调用的值匹配。

key

一个CryptoKey,包含用于解密的密钥。如果使用 RSA-OAEP,则为CryptoKeyPair 对象的 privateKey 属性。

data

一个ArrayBuffer、一个TypedArray 或一个DataView,包含要解密的数据(也称为密文)。

返回值

一个Promise,它以包含明文的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

此代码使用 CTR 模式下的 AES 解密 ciphertext。请注意,counter 必须与用于加密的值匹配。在 GitHub 上查看完整代码。

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

AES-CBC

此代码使用 CBC 模式下的 AES 解密 ciphertext。请注意,iv 必须与用于加密的值匹配。在 GitHub 上查看完整代码。

js
function decryptMessage(key, ciphertext) {
  // The iv value is the same as that used for encryption
  return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}

AES-GCM

此代码使用 GCM 模式下的 AES 解密 ciphertext。请注意,iv 必须与用于加密的值匹配。在 GitHub 上查看完整代码。

js
function decryptMessage(key, ciphertext) {
  // The iv value is the same as that used for encryption
  return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}

规范

规范
Web 加密 API
# SubtleCrypto-method-decrypt

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅