随机密码的定义与组成

76 0

下面先说明随机密码的定义与基本规则,再给出示例和常见问题。

随机密码的定义与组成

随机密码是按设定的长度和字符集,由密码学安全的随机数逐位抽取字符得到的口令。它不含生日、姓名等可被猜到的信息,强度主要取决于长度和字符集大小。

  • 长度不少于 12 位,越长越好
  • 不包含用户名、手机号、生日等个人信息
  • 不同网站绝不重复使用
  • 部分网站限制可用符号,生成前先查看规则
  • 不要只靠把字母替换成形近数字(如 a→@)来“加强”

示例

输入:长度 12,字符集:小写字母(26 个字符)

生成结果:示例:pvlhswwxvqwd;熵约 56.4 位,组合数约 26^12 ≈ 9.54×10^16

说明:熵 = 12 × log2(26) ≈ 56.4 位;示例仅用于说明格式,请勿直接作为自己的密码。

工作原理

生成器先确定字符集(例如 62 个大小写字母和数字),再从安全随机源取得随机整数,把它映射为字符集中的一个下标,重复到指定长度。为了避免“取模偏差”,规范的实现会丢弃落在不能整除范围内的随机数再重取,这样每个字符被选中的概率完全相同。

与相关概念的区别

随机密码与“口令短语”(多个随机单词组成,如 correct-horse-battery-staple)各有优点:随机字符密码同等长度下熵更高,口令短语更容易记忆和输入。从常用词表随机抽 5–6 个词,也能达到 60–80 位的熵。

JavaScript 示例

下面是用 JavaScript 实现的写法,可以按需要修改:

function genPassword(len, chars) {
  const out = [];
  const max = 256 - (256 % chars.length); // 去除取模偏差
  const buf = new Uint8Array(1);
  while (out.length < len) {
    crypto.getRandomValues(buf);
    if (buf[0] < max) out.push(chars[buf[0] % chars.length]);
  }
  return out.join('');
}

本站的密码生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。

常见问题

【网页生成的密码会被记录吗?】规范的生成器只在浏览器内计算;若不放心,可以断网后生成,或使用密码管理器自带的生成功能。

【为什么不建议用 Math.random?】Math.random 不是密码学安全的随机数,输出在理论上可被预测,生成密码应使用 crypto.getRandomValues。

【随机密码记不住怎么办?】交给密码管理器保存,只需记住一个足够长的主密码。

文中示例可以在本站对应工具中核对。生成和保存密码等敏感信息时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 密码 密码生成

抱歉,评论功能暂时关闭!