生成 | 安全 | 保护

> 生成 | 安全 | 保护 <

// 即时生成加密安全的密码

强度: —
熵: 0 位
[CRYPTO]

加密随机

使用 crypto.getRandomValues() 实现真正的加密随机性。

[CUSTOM]

完全可配置

选择长度、字符集并排除歧义字符。

[FREE]

批量生成

一次生成最多20个密码。

// 关于密码生成

工作原理:

此生成器使用 Web Crypto API 的 crypto.getRandomValues() 方法(CSPRNG)。每个字符使用加密随机的32位无符号整数从配置的字符池中选择。

示例:

Kj9#mP2$xR7!nQ4&

为什么使用生成器:

  • >通过 crypto.getRandomValues() API 实现 CSPRNG
  • >熵计算显示实际强度
  • >可配置的字符池适应任何策略
  • >批量生成用于配置工作流
  • >100%客户端 — 密码永远不会离开您的浏览器

>> 常见问题

Q: 为什么要使用密码生成器?

A: 人类不擅长创建随机密码。加密生成器可以产生真正随机的高熵密码。

Q: 这些密码安全吗?

A: 非常安全。使用 crypto.getRandomValues(),密码完全在您的设备上生成。

Q: 什么是密码熵?

A: 熵以位为单位衡量密码强度。计算为 log2(池大小^长度)。80+位被认为是强的。

Q: 推荐的密码长度是多少?

A: 大多数账户建议16个字符以上。高安全性应用建议20-32个字符。

Q: 密码短语 vs 随机密码?

A: 两者都可以是安全的。随机密码更短但更难记忆。密码短语更长但更容易记忆。

// 不同长度的熵(比特)

长度字母 + 数字(62)全部可打印字符(94)
847.652.4
1271.578.7
1695.3104.9
20119.1131.1

// 在命令行生成密码

openssl       openssl rand -base64 18
Linux         tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 20
Python        secrets.token_urlsafe(16)
Node.js       crypto.randomBytes(16).toString('base64url')
Browser       crypto.getRandomValues(new Uint32Array(8))

entropy (bits) = length x log2(alphabet size)

>> 更多问题

问:长密码比短而复杂的密码更好吗?

答:通常是的。每增加一个字符,熵增加 log2(字符集大小) 比特;16 位字母加数字(约 95 比特)远胜 8 位含符号的密码(约 52 比特)。

问:可以重复使用生成的密码吗?

答:不可以。每个账户使用不同的密码,并存放在密码管理器中。重复使用会让一次泄露变成所有账户被攻破。

问:为什么密码不能用 Math.random()?

答:Math.random() 可预测,并非为安全设计。本生成器使用浏览器的密码学安全随机数 crypto.getRandomValues(),在本地运行,不会传输任何内容。

// 其他语言