SubtleCrypto: decrypt() 方法
注意:此功能在 Web Workers 中可用。
SubtleCrypto 接口的 decrypt() 方法用于解密一些加密数据。它接受以下参数:一个用于解密的 密钥,一些可选的额外参数,以及要解密的数据(也称为“密文”)。它返回一个 Promise,该 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,其中包含要解密的数据(也称为 密文)。
返回值
一个 Promise,该 Promise 以包含明文的 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
此代码在 CTR 模式下使用 AES 解密 ciphertext。请注意,counter 必须与加密时使用的值匹配。 在 GitHub 上查看完整代码。
function decryptMessage(key, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "AES-CTR", counter, length: 64 },
key,
ciphertext,
);
}
AES-CBC
此代码在 CBC 模式下使用 AES 解密 ciphertext。请注意,iv 必须与加密时使用的值匹配。 在 GitHub 上查看完整代码。
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 上查看完整代码。
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 加密级别 2 # SubtleCrypto-method-decrypt |
浏览器兼容性
加载中…
另见
SubtleCrypto.encrypt().- RFC 3447 规定了 RSAOAEP。
- NIST SP800-38A 规定了 CTR 模式。
- NIST SP800-38A 规定了 CBC 模式。
- NIST SP800-38D 规定了 GCM 模式。
- FIPS 198-1 指定了 HMAC。