浏览器里的加密基础:哈希、对称密钥与什么仍留在本地
浏览器里的加密基础:哈希、对称密钥与什么仍留在本地
哈希不是加密。对称加密需要双方共享的秘密。浏览器端密码学能力能保护什么、不能保护什么。
原创流程图
浏览器里的加密基础:哈希、对称密钥与什么仍留在本地
理解原理
检查后再进入下一步
检查边界
检查后再进入下一步
使用工具
检查后再进入下一步
SHA-256 这类哈希把输入映射成固定长度摘要,并设计为不可反推。加密把明文映射成可用正确密钥还原的密文。如果工具声称加密密码却返回没有密钥的短固定字符串,那是哈希而不是加密。哈希用于完整性检查;存密码要用专门的密码哈希方案,而不是裸 SHA。
AES 等算法用同一把密钥加密和解密。密钥必须在不被截获的情况下到达对方,这才是难点。把密钥和密文放在同一封邮件里,或硬编码进前端 JavaScript,等于取消保护。浏览器工具很适合本地实验,以及在你独自持有密钥时加密后再上传;它们不能替代完整的密钥交换协议。
RSA 和椭圆曲线方案用公钥加密、私钥解密。这省去了运送共享秘密,但引入了证书和密钥管理问题。除非私钥是你本地生成且完全信任该页面,否则不要把私钥粘贴进随机网页表单。
客户端加密运行在页面控制的 JavaScript 里。被篡改的脚本、恶意扩展或注入的第三方库,都能在加密前读到明文,或在生成后读到密钥。本地处理减少服务器暴露,但不会创造可信计算基。把页面来源纳入威胁模型。
没有完整性校验的加密仍可能被篡改。现代实践偏好 AES-GCM 等能检测篡改的认证模式。只提供无认证旧模式的工具适合学习演示,不适合作为真实机密的默认。优先选择把安全模式做成明显默认的库和工具。
人类密码熵低,必须先用基于密码的密钥派生函数拉伸,才能变成加密密钥。把短密码直接喂给 AES 是自制方案的常见错误。如果浏览器工具接受密码,检查它是否正确派生密钥,还是直接把密码字节当密钥用。
浏览器哈希用于校验和与演示。浏览器对称加密用于你自己生成并保管密钥的本地文件。消息和协作使用成熟的端到端系统。不要在表单里发明新协议,然后把唯一密钥副本存在同一个浏览器配置里。
选择 AES-256 听起来很强,直到密钥和密文一起放在 localStorage,或页面加载了能读表单字段的第三方脚本。写清你在防谁:好奇的家人、被偷的笔记本、敌对的服务器运营方,还是网络窃听者。每个对手意味着不同控制。算法选择只是清单中的一行,而且很少是最先失败的那一行。
(中文扩写)A browser form that encrypts a note with a password is a fine teaching tool and a poor password manager. Production systems need key rotation, device sync, recovery paths and abuse monitoring. If you outgrow a local demo, migrate to a maintained application instead of bolting features onto a page that was never designed to hold long-lived secrets.
常见问题
不一样。哈希是单向摘要。加密可用密钥还原。
只有在你信任页面代码时。运营方提供处理明文和密钥的 JavaScript。
那会取消加密本应提供的机密性。密钥应走单独通道。
它爆破快,而且默认没有每用户盐。请用专门的密码哈希方案。