在浏览器里跑哈希工具,安全吗?

admin 24
#安全 #开发技巧

在浏览器里跑哈希工具,安全吗?

答:安全,但有几个前提要确认。下面我们用 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 里都是空的。

三招自验"是否真的没上传"

  1. 看 Network 面板:输入前后切到 Network → 没有任何 XHR / fetch 请求
  2. 看 Sources 面板:在 Sources 里搜索 fetch / XMLHttpRequest 关键字,看代码里有没有调用
  3. 看构建产物:开源项目可以直接看打包后的 JS

但是!这些场景别用在线工具

  • 生产环境的密钥签名——任何"在线"工具都不应该接触你的 master key
  • 含个人隐私的数据(身份证、银行卡)——尽管我们不收集,但你无法 100% 确认所有在线工具的诚实度
  • 离线/隔离网络环境——只能提前下好工具的离线版本

哈希 vs 加密:一字之差,天壤之别

  • 哈希(Hash):单向,不可逆。MD5 / SHA-256 / SHA-512 都属于这一类。常用于校验文件完整性、存密码(配合 salt)。
  • 加密(Encryption):双向,可逆。AES / RSA。需要密钥。

哈希工具只能验证"两端是否一致",不能"把哈希还原成原文"。如果你想要"加密后能解密",请使用专门的加密工具。


工具直达:哈希计算 | Base64(注意:Base64 是编码不是加密)