用的浏览器原生 Web Crypto API,不是自己写的加密算法(手写加密几乎必然有漏洞)。流程: ① 生成随机 salt(16 字节)和 IV(12 字节); ② 用 PBKDF2-SHA256 把你的口令迭代 10 万次派生成 256 位密钥(防暴力破解); ③ 用 AES-256 加密,把 salt + IV + 密文 拼起来转成 Base64 输出。
GCM 和 CBC 有什么区别?
AES-GCM:带认证(AEAD),能同时保证机密性和完整性。如果密文被篡改,解密会直接失败并报错。推荐用它。 AES-CBC:只保证机密性,不检测篡改,需要自己额外加 MAC 才安全。它的存在主要是为了兼容老系统。