Web Crypto API 是浏览器原生加密接口,支持密钥生成、加解密、签名和哈希等操作;基于W3C标准,安全性高、性能好,适用于前端敏感数据处理,但不能替代后端加密,也不宜单独保护长期密钥。Web Crypto API 是浏览器原生支持的加密接口,无需第三方库即可完成密钥生成、加密、解密、签名和哈希等操作。它基于标准 Web 标准(W3C),安全性高、性能好,适合在前端安全处理敏感数据(如用户密码、临时令牌、本地存储内容),但不能替代后端加密,也不应单独用于保护长期密钥或高价值凭证。支持的常用算法与适用场景Web Crypto API 支持多种现代加密算法,选择需兼顾浏览器兼容性与安全需求:AES-GCM:推荐用于对称加密(如加密用户本地配置),支持认证加密(AEAD),可同时保证机密性与完整性;Chrome 45+、Firefox 34+、Edge 17+、Safari 14+ 支持。 RSA-OAEP:适用于非对称加密(如用公钥加密会话密钥),适合密钥封装;需注意密钥长度建议 ≥2048 位。 ECDSA(P-256/P-384):常用于数字签名(如 JWT 签名验证),体积小、速度快,比 RSA 更适合前端。 SHA-256 / SHA-512:用于哈希计算(如密码派生、数据指纹),不可逆,适合与 PBKDF2 或 HKDF 配合使用。生成并使用 AES 密钥加密一段文本以下是一个完整、可运行的 AES-GCM 加密示例,包含密钥生成、加密、解密三步,所有操作均在内存中完成,密钥不暴露:// 1. 生成 256 位 AES-GCM 密钥const key = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);// 2. 准备待加密数据与随机 IV(必须唯一)const encoder = new TextEncoder();const data = encoder.encode("Hello, Web Crypto!");const iv = crypto.getRandomValues(new Uint8Array(12)); // GCM 推荐 12 字节 IV// 3. 加密const encrypted = await crypto.subtle.encrypt( { name: "AES-GCM", iv }, key, data);// 4. 解密(仅示意,实际中密钥与 IV 需安全传递/存储)const decrypted = await crypto.subtle.decrypt( { name: "AES-GCM", iv }, key, encrypted);console.log(new TextDecoder().decode(decrypted)); // "Hello, Web Crypto!"?? 注意:IV 必须每次加密都随机生成且唯一,不可复用;密钥不可用 exportKey("jwk") 明文导出后存入 localStorage;若需持久化密钥,应使用 wrapKey + 主密钥加密保护。立即学习“Java免费学习笔记(深入)”; 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

更多推荐