前端开发者必看:SubtleCrypto: encrypt() m

发布于 1 天前  8 次阅读


项目中遇到了SubtleCrypto:的需求,查阅了不少资料,给大家分享下我的方案。

Found this helpful? Share it with your team and leave a comment below!

正文

此功能非常成熟,适用于许多设备和浏览器版本。自2020年1月起,它可在所有浏览器上使用。

此功能仅在中可用此功能在中可用It takes as its arguments a

使用某些算法特定的参数进行加密,以及要加密的数据(也称为“明文” )。

将使用加密数据(也称为“密文” )完成。ENCRYPT (算法,密钥,数据)

包含要加密的数据(也称为包含“密文”的数据)。

遇到以下异常时,将拒绝Promise :

当请求的操作对于提供的密钥无效时引发(例如,无效的加密算法或指定加密算法的无效密钥)。

当操作因操作特定原因(例如,大小无效的算法参数或长于2的AES-GCM明文)失败时引发

Web Crypto API提供四种算法,支持

它们都基于相同的底层密码,即AES (高级加密标准)。

Web Crypto API支持三种不同的AES模式: CBC (密码区块链)

,其中包括检查密文是否未被攻击者修改。

攻击,其中攻击者可以要求系统解密任意消息,并使用结果来推断有关

虽然可以将身份验证添加到CTR和CBC模式,但它们默认情况下不提供身份验证,并且在手动实施时,很容易出现轻微但严重的错误。

GCM确实提供内置身份验证,因此通常建议使用其他两种AES模式。

更多内容

除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。

有问题欢迎评论区交流,看到会第一时间回复大家一起讨论。

Reference: SubtleCrypto: encrypt() method - Web APIs | MDN


点击体验一键VMP加密 |下滑查看JSVMP相关文章