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。