Web Crypto API
基线 广泛可用
此功能已经很成熟,可在许多设备和浏览器版本上运行。 它从 2015 年 7 月.
报告反馈
注意:此功能在 Web Workers 中可用。
Web Crypto API 是一个接口,允许脚本使用加密原语来构建使用加密的系统。
一些浏览器实现了名为 Crypto
的接口,但没有明确定义或在密码学上健全。为了避免混淆,此接口的方法和属性已从实现 Web Crypto API 的浏览器中移除,所有 Web Crypto API 方法都可以在一个新接口上使用: SubtleCrypto
。 Crypto.subtle
属性提供了对实现它的对象的访问权限。
警告:Web Crypto API 提供了许多低级加密原语。滥用它们很容易,而且其中的陷阱可能非常微妙。
即使假设您正确地使用了基本加密函数,安全密钥管理和整体安全系统设计也极难做到,通常属于专业安全专家的领域。
安全系统设计和实现中的错误可能会使系统的安全性完全失效。
接口
密码
-
请学习和实验,但在了解此主题的专家彻底审查之前,不要保证或暗示您工作成果的安全性。 Crypto 101 课程 可以成为学习安全系统设计和实现的良好起点。
SubtleCrypto
-
提供基本的密码学功能,例如密码学上强随机数生成器,以及通过
SubtleCrypto
对象访问密码学原语。可以通过Window.crypto
或WorkerGlobalScope.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-CBC、AES-CTR、AES-GCM 或 AES-KW 中的任何一个。 EcKeyGenParams
-
表示用于非对称加密算法的公钥和私钥对。
EcKeyImportParams
-
表示应作为
algorithm
参数传递给SubtleCrypto.generateKey()
的对象,在生成任何基于椭圆曲线的密钥对时:即当算法被识别为 ECDSA 或 ECDH 中的任何一个。 EcdhKeyDeriveParams
-
表示应作为
algorithm
参数传递给SubtleCrypto.importKey()
或SubtleCrypto.unwrapKey()
的对象,在生成任何基于椭圆曲线的密钥对时:即当算法被识别为 ECDSA 或 ECDH 中的任何一个。 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_5、RSA-PSS 或 RSA-OAEP 中的任何一个。 RsaOaepParams
-
表示应作为
algorithm
参数传递给SubtleCrypto.generateKey()
的对象,在生成任何基于 RSA 的密钥对时:即当算法被识别为 RSASSA-PKCS1-v1_5、RSA-PSS 或 RSA-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