SubtleCrypto.decrypt()

SubtleCrypto.decrypt() 以加密数据、算法和密钥为参数返回一个包含明文的 Promise 对象。

语法

var result = crypto.subtle.decrypt(algorithm, key, data);

属性

返回值

异常

Promise 将会在以下的异常被触发时返回 rejected:

InvalidAccessError
当提供的密钥无法执行请求的操作时(如:解密算法无效,或对指定的解密算法提供了无效的密钥)。
OperationError
因特定的操作原因导致操作失败时(如:算法的参数大小无效,或解密结果失败)。

实例

const decryptText = async (ctBuffer, iv, password) => {
    const pwUtf8 = new TextEncoder().encode(password);
    const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8);

    const alg = { name: 'AES-GCM', iv: iv };
    const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']);

    const ptBuffer = await crypto.subtle.decrypt(alg, key, ctBuffer);

    const plaintext = new TextDecoder().decode(ptBuffer);

    return plaintext;
}

iv 的含义在 SubtleCrypto.encrypt() 中可以找到。ctBuffer 是 SubtleCrypto.encrypt() 返回的密文。

规范

Specification Status Comment
Web Cryptography API
SubtleCrypto.decrypt()
Recommendation Initial definition.

浏览器支持

BCD tables only load in the browser

另请参见