JavaScript 加密主要依靠 Web Crypto API,支持 RSA/AES-GCM/SHA-256/ECDSA 等算法,需在安全上下文中运行;RSA 用于非对称加密与签名,AES-GCM 适合高速对称加密并带认证,SHA-256 用于不可逆哈希,ECDSA 用于身份认证;所有操作需注意密钥导出、IV 唯一性、加盐迭代等安全细节。

JavaScript 中实现加密主要依靠 Web Crypto API,它是浏览器原生支持的安全加密接口,无需第三方库,支持生成密钥、加解密、签名验签、哈希运算等。它基于标准的密码学算法(如 AES、RSA、SHA-256),且所有操作都在安全上下文中(https 或 localhost)执行。
crypto.subtle.generateKey("RSA-OAEP", true, ["encrypt", "decrypt"]) 可生成 RSA 密钥对extractable: false),如需导出需显式设为 true,但注意安全风险exportKey() 转成 PEM 或 JWK 格式,方便传输或存储适合加密敏感数据(如本地存储的 token、用户信息),速度快、安全性高。
crypto.subtle.generateKey("AES-GCM", true, ["encrypt", "decrypt"]) 生成对称密钥encrypt({ name: "AES-GCM", iv }, key, data),返回 ArrayBuffer;解密同理,必须用相同 IV 和密钥常用于密码摘要、文件校验、生成唯一标识等,不可逆。
立即学习“Java免费学习笔记(深入)”;
crypto.subtle.digest("SHA-256", data),data 需是 ArrayBuffer 或 TypedArray
Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2,'0')).join('')
deriveKey + PBKDF2 加盐迭代派生密钥用于身份认证、防抵赖,比如前端签署请求、后端验证来源。
generateKey("ECDSA", true, ["sign", "verify"])(推荐 nistP256 曲线)sign("ECDSA", privateKey, data)
verify("ECDSA", publicKey, signature, data),返回布尔值基本上就这些。Web Crypto API 功能完整但接口偏底层,需手动处理编码(如字符串 → Uint8Array)、密钥管理、IV/盐值保存等细节。用好它,关键在理解每个算法的适用场景和安全约束,而不是堆砌功能。
以上就是javascript如何实现加密_Web Crypto API有哪些基本操作的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号