Web Crypto API
注意:此功能在 Web Workers 中可用。
Web Crypto API 是一种接口,允许脚本使用加密原语来构建使用加密的系统。
一些浏览器曾实现过一个名为 Crypto 的接口,但它定义不明确且在加密方面不严谨。为了避免混淆,在实现 Web Crypto API 的浏览器中,此接口的方法和属性已被移除,所有 Web Crypto API 的方法都可以在一个新的接口上获得:SubtleCrypto。 Crypto.subtle 属性提供了访问实现该接口的对象的途径。
警告: Web Crypto API 提供了一系列低级加密原语。非常容易误用它们,并且其中涉及的陷阱可能非常隐蔽。
即使您正确使用了基本的加密函数,安全的密钥管理和整体安全系统设计也极其难以做到完美,并且通常是安全专家领域的专业知识。
安全系统设计和实现的错误可能导致系统的安全性完全失效。
请学习并进行实验,但在经过精通此主题的专业人士的彻底审查之前,不要保证或暗示您的工作的安全性。Crypto 101 课程是开始学习安全系统设计和实现的绝佳起点。
接口
Crypto-
提供基本的加密功能,例如加密强度的随机数生成器,以及通过
SubtleCrypto对象访问加密原语。可以通过主线程作用域的全局对象Window.crypto或工作线程作用域的全局对象WorkerGlobalScope.crypto来访问此类型的对象。 SubtleCrypto-
表示一个提供低级加密功能的对象的接口,用于密钥生成、加密、解密、密钥包装和解包等。
CryptoKey-
表示一个加密 密钥,该密钥是从
SubtleCrypto方法generateKey()、deriveKey()、importKey()或unwrapKey()中获得的。
字典
AesCbcParams-
表示当使用 AES-CBC 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()或SubtleCrypto.unwrapKey()的对象。 AesCtrParams-
表示当使用 AES-CTR 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()或SubtleCrypto.unwrapKey()的对象。 AesGcmParams-
表示当使用 AES-GCM 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()或SubtleCrypto.unwrapKey()的对象。 AesKeyGenParams-
表示当生成 AES 密钥时,应作为 `algorithm` 参数传递给
SubtleCrypto.generateKey()的对象:即当算法被标识为 AES-CBC、AES-CTR、AES-GCM 或 AES-KW 之一时。 CryptoKeyPair-
表示用于非对称加密算法的公钥和私钥对。
EcKeyGenParams-
表示当生成任何基于椭圆曲线的密钥对时,应作为 `algorithm` 参数传递给
SubtleCrypto.generateKey()的对象:即当算法被标识为 ECDSA 或 ECDH 时。 EcKeyImportParams-
表示当生成任何基于椭圆曲线的密钥对时,应作为 `algorithm` 参数传递给
SubtleCrypto.importKey()或SubtleCrypto.unwrapKey()的对象:即当算法被标识为 ECDSA 或 ECDH 时。 EcdhKeyDeriveParams-
表示当使用 ECDH 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.deriveKey()的对象。 EcdsaParams-
表示当使用 ECDSA 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.sign()或SubtleCrypto.verify()的对象。 HkdfParams-
表示当使用 HKDF 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.deriveKey()的对象。 HmacImportParams-
表示当生成 HMAC 算法的密钥时,应作为 `algorithm` 参数传递给
SubtleCrypto.importKey()或SubtleCrypto.unwrapKey()的对象。 HmacKeyGenParams-
表示当生成 HMAC 算法的密钥时,应作为 `algorithm` 参数传递给
SubtleCrypto.generateKey()的对象。 Pbkdf2Params-
表示当使用 PBKDF2 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.deriveKey()的对象。 RsaHashedImportParams-
表示当导入任何基于 RSA 的密钥对时,应作为 `algorithm` 参数传递给
SubtleCrypto.importKey()或SubtleCrypto.unwrapKey()的对象:即当算法被标识为 RSASSA-PKCS1-v1_5、RSA-PSS 或 RSA-OAEP 之一时。 RsaHashedKeyGenParams-
表示当生成任何基于 RSA 的密钥对时,应作为 `algorithm` 参数传递给
SubtleCrypto.generateKey()的对象:即当算法被标识为 RSASSA-PKCS1-v1_5、RSA-PSS 或 RSA-OAEP 之一时。 RsaOaepParams-
表示当使用 RSA_OAEP 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()或SubtleCrypto.unwrapKey()的对象。 RsaPssParams-
表示当使用 RSA-PSS 算法时,应作为 `algorithm` 参数传递给
SubtleCrypto.sign()或SubtleCrypto.verify()的对象。
其他接口的扩展
Window.crypto-
表示与主线程作用域中的全局对象关联的
Crypto对象。 WorkerGlobalScope.crypto-
表示与工作线程作用域中的全局对象关联的
Crypto对象。
规范
| 规范 |
|---|
| Web 加密级别 2 # crypto-interface |
浏览器兼容性
加载中…