Web Crypto API

基线 广泛可用

此功能已经很成熟,可在许多设备和浏览器版本上运行。 它从 2015 年 7 月.

报告反馈

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

注意:此功能在 Web Workers 中可用。

Web Crypto API 是一个接口,允许脚本使用加密原语来构建使用加密的系统。

一些浏览器实现了名为 Crypto 的接口,但没有明确定义或在密码学上健全。为了避免混淆,此接口的方法和属性已从实现 Web Crypto API 的浏览器中移除,所有 Web Crypto API 方法都可以在一个新接口上使用: SubtleCryptoCrypto.subtle 属性提供了对实现它的对象的访问权限。

警告:Web Crypto API 提供了许多低级加密原语。滥用它们很容易,而且其中的陷阱可能非常微妙。

即使假设您正确地使用了基本加密函数,安全密钥管理和整体安全系统设计也极难做到,通常属于专业安全专家的领域。

安全系统设计和实现中的错误可能会使系统的安全性完全失效。

接口

密码

请学习和实验,但在了解此主题的专家彻底审查之前,不要保证或暗示您工作成果的安全性。 Crypto 101 课程 可以成为学习安全系统设计和实现的良好起点。

SubtleCrypto

提供基本的密码学功能,例如密码学上强随机数生成器,以及通过 SubtleCrypto 对象访问密码学原语。可以通过 Window.cryptoWorkerGlobalScope.crypto 在全局范围内访问此类型的对象。

CryptoKey

表示一个对象,它提供低级加密函数,用于密钥生成、加密、解密、密钥包装和解包等等。

表示从 SubtleCrypto 方法 generateKey()deriveKey()importKey()unwrapKey() 获得的加密 密钥

AesCbcParams

字典

AesCtrParams

表示应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象,在使用 AES-CBC 算法时。

AesGcmParams

表示应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象,在使用 AES-CTR 算法时。

AesKeyGenParams

表示应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象,在使用 AES-GCM 算法时。

CryptoKeyPair

表示应作为 algorithm 参数传递给 SubtleCrypto.generateKey() 的对象,在生成 AES 密钥时:即当算法被识别为 AES-CBCAES-CTRAES-GCMAES-KW 中的任何一个。

EcKeyGenParams

表示用于非对称加密算法的公钥和私钥对。

EcKeyImportParams

表示应作为 algorithm 参数传递给 SubtleCrypto.generateKey() 的对象,在生成任何基于椭圆曲线的密钥对时:即当算法被识别为 ECDSAECDH 中的任何一个。

EcdhKeyDeriveParams

表示应作为 algorithm 参数传递给 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的对象,在生成任何基于椭圆曲线的密钥对时:即当算法被识别为 ECDSAECDH 中的任何一个。

EcdsaParams

表示应作为 algorithm 参数传递给 SubtleCrypto.deriveKey() 的对象,在使用 ECDH 算法时。

HkdfParams

表示应作为 algorithm 参数传递给 SubtleCrypto.sign()SubtleCrypto.verify() 的对象,在使用 ECDSA 算法时。

HmacImportParams

表示应作为 algorithm 参数传递给 SubtleCrypto.deriveKey() 的对象,在使用 HKDF 算法时。

HmacKeyGenParams

表示应作为 algorithm 参数传递给 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的对象,在为 HMAC 算法生成密钥时。

Pbkdf2Params

表示应作为 algorithm 参数传递给 SubtleCrypto.generateKey() 的对象,在为 HMAC 算法生成密钥时。

RsaHashedImportParams

表示应作为 algorithm 参数传递给 SubtleCrypto.deriveKey() 的对象,在使用 PBKDF2 算法时。

RsaHashedKeyGenParams

表示应作为 algorithm 参数传递给 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的对象,在导入任何基于 RSA 的密钥对时:即当算法被识别为 RSASSA-PKCS1-v1_5RSA-PSSRSA-OAEP 中的任何一个。

RsaOaepParams

表示应作为 algorithm 参数传递给 SubtleCrypto.generateKey() 的对象,在生成任何基于 RSA 的密钥对时:即当算法被识别为 RSASSA-PKCS1-v1_5RSA-PSSRSA-OAEP 中的任何一个。

RsaPssParams

表示应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象,在使用 RSA_OAEP 算法时。

表示应作为 algorithm 参数传递给 SubtleCrypto.sign()SubtleCrypto.verify() 的对象,在使用 RSA-PSS 算法时。

Window.crypto

其他接口的扩展

WorkerGlobalScope.crypto

表示与主线程作用域中的全局对象相关联的 Crypto 对象。

规范

表示与工作线程作用域中的全局对象相关联的 Crypto 对象。
规范
# Web Cryptography API

浏览器兼容性

crypto-interface