在浏览器里跑哈希工具,安全吗?
答:安全,但有几个前提要确认。下面我们用 ToolHub 的 哈希计算工具 为例拆开讲。
客户端哈希 ≠ 上传后哈希
很多人看到"在线哈希工具"就下意识担心:我的密码/Token 会上传吗?
要回答这个问题,关键看工具的实现。ToolHub 的做法是:
// 简化版:纯前端 Web Crypto API
async function sha256(text: string) {
const buf = new TextEncoder().encode(text)
const hash = await crypto.subtle.digest('SHA-256', buf)
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0'))
.join('')
}
整个过程在浏览器里完成,没有任何网络请求。你可以打开 DevTools 的 Network 面板验证——不管你输入多长的字符串,Network 里都是空的。
三招自验"是否真的没上传"
- 看 Network 面板:输入前后切到 Network → 没有任何
XHR/fetch请求 - 看 Sources 面板:在 Sources 里搜索 fetch / XMLHttpRequest 关键字,看代码里有没有调用
- 看构建产物:开源项目可以直接看打包后的 JS
但是!这些场景别用在线工具
- 生产环境的密钥签名——任何"在线"工具都不应该接触你的 master key
- 含个人隐私的数据(身份证、银行卡)——尽管我们不收集,但你无法 100% 确认所有在线工具的诚实度
- 离线/隔离网络环境——只能提前下好工具的离线版本
哈希 vs 加密:一字之差,天壤之别
- 哈希(Hash):单向,不可逆。MD5 / SHA-256 / SHA-512 都属于这一类。常用于校验文件完整性、存密码(配合 salt)。
- 加密(Encryption):双向,可逆。AES / RSA。需要密钥。
哈希工具只能验证"两端是否一致",不能"把哈希还原成原文"。如果你想要"加密后能解密",请使用专门的加密工具。