生成加密安全的随机令牌,支持hex和base64格式
- 和 _ 的更紧凑字符串——相同位长度比十六进制短约 25%,无需百分号编码即可在 URL 中安全使用。该变体使用 RFC 4648 §5 的 URL 安全字母表,将 + 替换为 -,/ 替换为 _,并省略填充 = 字符。crypto.getRandomValues() Web API 创建加密安全随机令牌——与 SSL/TLS 生成会话密钥使用的相同熵源。每次点击产生独立的新随机值,与先前任何令牌无关联。点击复制将令牌传输到剪贴板。生成令牌的用途:API 密钥发放、JWT 密钥(推荐 256+ 位)、密码重置令牌(限时单次使用)、OAuth state 参数(防止 OAuth 流程中的 CSRF)、会话标识符、HMAC 签名密钥以及任何需要不可预测不可猜测值的应用。所有生成完全在浏览器中发生——令牌在本地生成,绝不会传输到任何服务器。加密安全与普通随机数生成之间的区别对安全性至关重要。<strong>Math.random()</strong> 使用为游戏和模拟中的统计均匀性设计的伪随机数生成器(PRNG)——它不适用于安全目的,因为其内部状态可通过观察输出值预测,种子来自当前时间(使其可被暴力破解)。<strong>crypto.getRandomValues()</strong> 从操作系统的硬件熵池中提取熵——结合鼠标移动、键盘时序、磁盘 I/O 抖动、CPU 周期计数器和专用硬件随机数生成器(Intel 的 RDRAND、ARM 的 TrustZone)等来源。这提供适用于加密密钥生成的真实不可预测的随机性。NIST SP 800-90A 规定了加密安全随机比特生成的标准。PivaBox 令牌生成器独家使用 <code>crypto.getRandomValues()</code>,绝不回退到 <code>Math.random()</code>——您的令牌具有与保护 HTTPS 连接的密钥相同的熵质量。
令牌长度应基于威胁模型和令牌的生命周期选择。<strong>128 位令牌</strong>提供 2^128 种可能值——适用于会话 Cookie 和 CSRF 令牌,攻击需要在线暴力破解(服务器对尝试进行速率限制),令牌相对快速过期(数小时到数天)。<strong>256 位令牌</strong>是安全社区当前的黄金标准——2^256 是天文数字级别(约 1.16 × 10^77),即使使用地球上所有计算能力,离线暴力破解攻击也不可行。用于 API 密钥、密码重置令牌和可能长期存储的身份验证令牌。<strong>512 位令牌</strong>提供针对理论上的量子计算攻击的安全余量(Grover 算法可在 √N 步内搜索 N 元素空间,有效地将安全比特减半),推荐用于长期签名密钥和主密钥。NIST 建议(SP 800-131A)要求至少 112 位安全强度,对应 224 位 ECC 密钥或 2048 位 RSA 密钥。
是的,令牌使用与浏览器中 HTTPS/TLS 底层相同的 Web Crypto API 生成,使其适用于生产身份验证系统。然而,安全的令牌生成只是安全身份验证系统的一部分。在生产中使用生成令牌的最佳实践:(1) 在数据库中仅存储令牌的<strong>哈希值</strong>(SHA-256),永不存储原始令牌——这样数据库泄露不会暴露有效令牌(类似密码应存储为 bcrypt 哈希的方式)。(2) 仅通过 <strong>HTTPS</strong> 传输令牌——绝不在明文 HTTP 连接或 URL 查询字符串中传输(会被服务器和代理记录)。(3) 包含<strong>过期时间</strong>——令牌应是短期有效的(会话令牌几分钟到几小时,API 密钥几天),并具有刷新机制。(4) 对令牌认证端点进行<strong>速率限制</strong>以防止暴力破解攻击。(5) 在 Authorization 头中使用 <strong>Bearer</strong> 方案(<code>Authorization: Bearer <token></code>)而非自定义头。PivaBox 令牌生成器完全在客户端运行——令牌在您的浏览器中生成,绝不会传输到任何服务器。