SubtleCrypto:decrypt() 方法
decrypt()
是 SubtleCrypto
接口的一个方法,用于解密一些已加密的数据。它接受一个用于解密的密钥、一些可选的额外参数以及要解密的数据(也称为“密文”)作为参数。它返回一个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
,它以包含明文的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
此代码使用 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 加密 API # SubtleCrypto-method-decrypt |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
SubtleCrypto.encrypt()
.- RFC 3447 指定 RSAOAEP。
- NIST SP800-38A 指定 CTR 模式。
- NIST SP800-38A 指定 CBC 模式。
- NIST SP800-38D 指定 GCM 模式。
- FIPS 198-1 指定 HMAC。