Uvlio

Command Palette

Search for a command to run...

返回文章列表
技术文章

浏览器里的加密基础:哈希、对称密钥与什么仍留在本地

浏览器加密工具让严肃算法变得容易运行,这既有用也危险。算法很少是弱点。弱点在密钥处理、威胁模型,以及浏览器能加密的东西,浏览器也可能被骗去解密。 实用做法是在用户会遇到的相同条件下核对输出,并保留一份你检查过什么的简短记录。
limitcool 维护的 Uvlio 编辑团队2026-05-177 分钟阅读
主题封面开发工具AES / DES 加解密RSA 密钥工具

浏览器里的加密基础:哈希、对称密钥与什么仍留在本地

哈希不是加密。对称加密需要双方共享的秘密。浏览器端密码学能力能保护什么、不能保护什么。

文章主题预览
理解原理
检查边界
使用工具
关联工具
AES / DES 加解密RSA 密钥工具
阅读重点
1理解原理
2检查边界
3使用工具

原创流程图

浏览器里的加密基础:哈希、对称密钥与什么仍留在本地

这张图由 Uvlio 为本文工作流生成,用来说明从输入检查到输出判断的基本路径。
1

理解原理

检查后再进入下一步

2

检查边界

检查后再进入下一步

3

使用工具

检查后再进入下一步

维护与复核
维护者:limitcool。阅读时可重点关注技术原理、处理边界、隐私风险和可验证事实。
哈希是单向的;加密是双向的

SHA-256 这类哈希把输入映射成固定长度摘要,并设计为不可反推。加密把明文映射成可用正确密钥还原的密文。如果工具声称加密密码却返回没有密钥的短固定字符串,那是哈希而不是加密。哈希用于完整性检查;存密码要用专门的密码哈希方案,而不是裸 SHA。

对称加密需要共享秘密

AES 等算法用同一把密钥加密和解密。密钥必须在不被截获的情况下到达对方,这才是难点。把密钥和密文放在同一封邮件里,或硬编码进前端 JavaScript,等于取消保护。浏览器工具很适合本地实验,以及在你独自持有密钥时加密后再上传;它们不能替代完整的密钥交换协议。

非对称加密分离公钥与私钥

RSA 和椭圆曲线方案用公钥加密、私钥解密。这省去了运送共享秘密,但引入了证书和密钥管理问题。除非私钥是你本地生成且完全信任该页面,否则不要把私钥粘贴进随机网页表单。

浏览器能看见的,页面上的攻击者也能看见

客户端加密运行在页面控制的 JavaScript 里。被篡改的脚本、恶意扩展或注入的第三方库,都能在加密前读到明文,或在生成后读到密钥。本地处理减少服务器暴露,但不会创造可信计算基。把页面来源纳入威胁模型。

带认证的加密以及模式为什么重要

没有完整性校验的加密仍可能被篡改。现代实践偏好 AES-GCM 等能检测篡改的认证模式。只提供无认证旧模式的工具适合学习演示,不适合作为真实机密的默认。优先选择把安全模式做成明显默认的库和工具。

密码不是密钥

人类密码熵低,必须先用基于密码的密钥派生函数拉伸,才能变成加密密钥。把短密码直接喂给 AES 是自制方案的常见错误。如果浏览器工具接受密码,检查它是否正确派生密钥,还是直接把密码字节当密钥用。

一条实用经验

浏览器哈希用于校验和与演示。浏览器对称加密用于你自己生成并保管密钥的本地文件。消息和协作使用成熟的端到端系统。不要在表单里发明新协议,然后把唯一密钥副本存在同一个浏览器配置里。

威胁模型胜过算法名称

选择 AES-256 听起来很强,直到密钥和密文一起放在 localStorage,或页面加载了能读表单字段的第三方脚本。写清你在防谁:好奇的家人、被偷的笔记本、敌对的服务器运营方,还是网络窃听者。每个对手意味着不同控制。算法选择只是清单中的一行,而且很少是最先失败的那一行。

补充:Local demos versus production systems

(中文扩写)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。

能把 AES 密钥和密文发在同一封邮件里吗?

那会取消加密本应提供的机密性。密钥应走单独通道。

为什么裸 SHA-256 不适合存密码?

它爆破快,而且默认没有每用户盐。请用专门的密码哈希方案。