伪随机数 (PRNG) 与密码学安全伪随机数 (CSPRNG)
在 JavaScript 中,许多初学者习惯使用 Math.random() 来生成验证码、Token 或用户密码。然而在网络安全领域,这是致命的严重漏洞。
1. Math.random() 的本质:主流浏览器内核(如 V8)使用 xorshift128+ 等伪随机数发生器。它是确定性的数学递推算法,只要黑客收集到几组连续的输出值,就能准确推算出随机数生成器的内部种子状态,从而预测出你接下来生成的每一个“随机”字符!
2. Web Crypto API (CSPRNG):浏览器提供的 crypto.getRandomValues() 会从操作系统的底层熵池(如硬件热噪声、鼠标移动轨迹、键盘中断间隔)获取真正的不可预测熵源,具备极高的抗预测性。
密码熵值 (Entropy) 与暴力破解成本
密码的安全性取决于其信息熵(以比特 bit 为单位):
$$\text{Entropy} = L \times \log_2(N)$$
其中 $L$ 为密码长度,$N$ 为字符集大小。
- 一个 8 位纯数字密码 的熵仅约 26.6 bits,现代 RTX 4090 显卡每秒可进行数百亿次哈希碰撞,几秒内即可被穷举。
- 一个 16 位包含大小写字母、数字和符号的密码,熵值高达 95.2 bits,即便动用全球超算集群也需要数十万年才能攻破。
FuaHub 密码生成器 严格基于 window.crypto.getRandomValues 构建,所有计算 100% 局限在本地内存,为您提供金融级的密码生成保障。
