Security Tools

浏览器端密码安全:生成、加密、哈希与测试——无需服务器

浏览器端密码与加密工具实用指南——即时生成强密码、使用 AES-256 加密文本、使用 PBKDF2 哈希密码,并实时检测密码强度。

7分钟阅读

笔记本电脑键盘上的挂锁,象征数字安全

每位开发者和注重安全的用户最终都会需要同一套工具:生成强密码、加密敏感文本、对密码进行哈希处理以便存储,或者验证哈希值是否匹配。过去,这些操作需要安装 OpenSSL 或专用应用程序。如今,Web Crypto API 已足够强大,可以完全在浏览器内完成所有这些操作——无需任何服务器交互,数据完全不离开你的设备。

以下是这些核心工具的全面介绍,以及如何有效使用每一个工具。

1. 密码生成器:创建密码的正确方式

人类天生不擅长创建随机密码。我们会在无意识中使用规律——字典单词、姓名、年份、键盘连击如 qwerty123。真正的随机密码生成器能避免所有这些问题。

我们的密码生成器使用 crypto.getRandomValues()——内置于所有现代浏览器的加密级安全随机数生成器。它与 Math.random() 的区别在于:

  • Math.random() 是伪随机序列——只要知道种子就可以预测
  • crypto.getRandomValues() 从操作系统级熵源取样——真正不可预测

推荐设置:

使用场景 长度 选项
网站登录 16+ 大写、小写、数字、符号
数据库密码 24+ 所有字符集
加密密钥口令 32+ 所有字符集
PIN(设备解锁) 8+ 仅数字

需要避免的情况:

  • 少于 12 个字符的密码(现代 GPU 可暴力破解)
  • 纯符号密码(许多服务会拒绝)
  • 曾在任何地方使用过的密码

2. 密码强度检测器:提交前先了解强度

在设置密码之前——或者审查现有密码时——请使用我们的密码强度检测器进行检测。它会评估:

  • 长度得分 —— 越长越好
  • 字符集多样性 —— 小写、大写、数字、符号
  • 常见规律 —— 字典单词、键盘序列、重复字符
  • 熵值位数 —— 衡量密码猜测难度的数学指标

熵值得分是最客观的衡量标准。以当前计算速度,128 位熵的密码需要比宇宙年龄还长的时间才能被暴力破解。

"password"          → 熵值:~11 位  ❌ 极差
"P@ssw0rd"          → 熵值:~18 位  ❌ 仍然很差(存在规律)
"correct-horse-bat" → 熵值:~44 位  ⚠ 一般(字典单词)
"Kx9#mP2$vL7nQw"   → 熵值:~87 位  ✅ 强
"mQ3$kX9#nP7&vL2@" → 熵值:~104 位 ✅ 非常强

3. AES-256 加密:使用军事级加密保护文本

需要存储私密笔记、加密配置值,或通过不安全渠道传输敏感文本?我们的 AES 加密/解密工具使用 AES-256-GCM——与银行、政府机构和端对端加密通讯应用所用相同的加密算法。

AES-256-GCM 工作原理(简化版)

  1. 你的口令通过 PBKDF2 经过 200,000 次迭代,派生出一个 256 位密钥
  2. 每次加密都会生成一个随机 IV(初始化向量)——确保相同明文每次加密结果不同
  3. 明文被加密,并生成一个认证标签——用于检测篡改
  4. 输出为 base64 编码:IV + tag + 密文
明文:"API_KEY=sk_live_abc123"
口令:"my-strong-passphrase"
           ↓
加密结果:"a3Fm9K2...base64...Xp7nQ=="

安全特性:

  • ✅ 零知识——不向任何服务器发送任何数据
  • ✅ 认证加密——如果密文被篡改,解密将失败
  • ✅ Salt + IV 随机化——相同输入每次产生不同输出
  • ✅ 200,000 次 PBKDF2 迭代——抵御口令暴力破解

实际使用场景:

  • .env 值加密后存储到笔记应用中
  • 通过邮件/Slack 与同事共享密码(发送密文;通过不同渠道共享口令)
  • 加密日记或个人笔记
  • 以加密形式将 API 密钥存储在电子表格中

4. 密码哈希生成器:使用 PBKDF2 安全存储密码

如果你正在构建一个存储用户密码的应用,绝对不能以明文存储密码——也不能使用 MD5/SHA-1 这类弱哈希算法。我们的密码哈希生成器使用 PBKDF2-SHA256 来创建安全的密码哈希。

为什么选择 PBKDF2 而不是 MD5/SHA-256?

哈希算法 每次猜测耗时(GPU) 迭代次数 评价
MD5 0.001ms 1 ❌ 已破解
SHA-256 0.002ms 1 ❌ 速度过快
PBKDF2-SHA256 200ms+ 200,000 ✅ 适当
bcrypt(cost 12) 300ms+ 自适应 ✅ 适当

密码哈希的核心目的是让每次猜测都变得代价高昂。快速哈希对密码安全来说是灾难性的。

哈希格式输出:

pbkdf2$200000$<salt>$<hash>

每次哈希的 salt 都是随机生成的,这意味着相同的密码每次会产生不同的哈希值——从而防止彩虹表攻击。


5. TOTP / 2FA 生成器:测试你的身份验证器代码

我们的 TOTP / 2FA 生成器可生成与 Google Authenticator、Authy 以及任何符合 RFC 6238 标准的身份验证器应用兼容的基于时间的一次性密码。输入 Base32 密钥,即可获取当前 6 位验证码及倒计时。

使用场景:

  • 验证你服务器的 TOTP 实现是否生成正确的验证码
  • 在向用户部署 2FA 之前测试其设置
  • 为已注册的密钥生成验证码(作为备用方法)

TOTP 验证码每 30 秒更新一次,与当前 UTC 时间绑定,在没有密钥的情况下在数学上不可预测。


6. Diceware 口令短语:易记且数学上足够强大

我们的 Diceware 密码生成器从 EFF 词表中创建口令短语——与安全研究人员用于主密码和磁盘加密密钥的方法相同。

示例:correct-horse-battery-staple-voyage

为什么口令短语在作为主密码时优于随机字符密码:

密码 熵值 记忆难度
Kx9#mP2$(8 个字符) ~52 位 非常难记
correct-horse-battery(3 个单词) ~58 位 容易记
correct-horse-battery-staple(4 个单词) ~77 位 较容易记
correct-horse-battery-staple-voyage(5 个单词) ~96 位 可以记住

对于密码管理器的主密码——你必须记住且绝不能写下来——5 个单词的 Diceware 口令短语是安全性与记忆难度之间的最佳平衡。


安全检查清单

在部署任何身份验证系统之前,请逐项检查:

  1. ✅ 使用密码生成器生成密码——使用 crypto.getRandomValues()
  2. ✅ 使用密码强度检测器验证密码强度——特权账户目标为 80+ 熵值位数
  3. ✅ 使用 PBKDF2、bcrypt 或 Argon2 对存储的密码进行哈希处理——使用密码哈希生成器验证输出格式
  4. ✅ 使用 AES 加密对静态敏感值进行加密——使用 AES-256-GCM,而非 AES-ECB
  5. ✅ 启用 2FA 并使用 TOTP 生成器测试验证码
  6. ✅ 对于主密码,使用 Diceware 生成器——最少 5 个单词

核心理念:本列表中的每个工具都完全在你的浏览器中运行。你的密码、明文和哈希值永远不会离开你的设备。这不是一项附加功能——而是安全工具的最低可接受标准。