密码生成器/ 安全随机

一键生成高强度随机密码,支持自定义长度与字符类型。使用 Web Crypto API,密码不上传服务器。

生成设置
密码长度
43264128
生成数量
一次生成多个密码
5
排除 0 O o I l 1 等
强度极强
熵值: 104 bits91 chars

密码在浏览器本地生成,不会上传到任何服务器

生成结果
~,uyz,{`?AM/WF;7
?<yqaNSMT0#,p`Ae
Y+iGl8t2uE,a85Y3
(phKa&ckGFI+jJD|
EO@Zzb.kq-gVV=k$

这个工具有帮到你吗?

什么样的密码算强密码

强密码通常满足以下条件:长度至少 12 位(推荐 16 位以上)、包含大小写字母、数字和特殊符号、不使用字典词汇或个人信息、每个网站使用不同密码。密码强度与长度高度相关 — 一个 16 位的随机密码比 8 位复杂密码更难暴力破解。NIST 最新指南建议密码长度优先于复杂度。

为什么不应该自己想密码

人类在创建密码时倾向于使用有规律的模式:姓名 + 生日 + 符号、键盘序列(qwerty、123456)、常见单词变形等。这些模式早已被攻击者收录在密码字典中,可在秒级被破解。使用密码生成器产生的随机密码没有任何规律,暴力破解需要数百年。配合密码管理器(如 1Password、Bitwarden)使用随机密码是最佳实践。

这个密码生成器安全吗

本工具使用浏览器内置的 Web Crypto API(crypto.getRandomValues)生成密码,这是密码学安全的伪随机数生成器(CSPRNG)。所有生成过程完全在浏览器本地完成,密码不会上传到任何服务器,没有网络传输,因此不存在泄露风险。你可以在离线状态下放心使用。

代码示例

JavaScript
function generatePassword(len, charset) {
  const arr = new Uint32Array(len);
  crypto.getRandomValues(arr);
  return Array.from(arr, (v) =>
    charset[v % charset.length]
  ).join("");
}

const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
const pw = generatePassword(16, chars);
// e.g. "xK9#mP2&vL5$nQ7@"
Python
import secrets
import string

def generate_password(length=16):
    chars = (
        string.ascii_letters
        + string.digits
        + string.punctuation
    )
    return "".join(
        secrets.choice(chars)
        for _ in range(length)
    )

pw = generate_password(16)
# Uses OS-level CSPRNG
TypeScript
function securePassword(
  length: number,
  options = {
    upper: true, lower: true,
    digits: true, symbols: true,
  }
): string {
  let pool = "";
  if (options.upper) pool += "A-Z";
  if (options.lower) pool += "a-z";
  if (options.digits) pool += "0-9";
  if (options.symbols) pool += "!@#$%^&*";
  const buf = new Uint32Array(length);
  crypto.getRandomValues(buf);
  return [...buf].map(v =>
    pool[v % pool.length]).join("");
}
Go
import (
    "crypto/rand"
    "math/big"
)

func GeneratePassword(
    length int, charset string,
) (string, error) {
    result := make([]byte, length)
    max := big.NewInt(int64(len(charset)))
    for i := range result {
        n, err := rand.Int(rand.Reader, max)
        if err != nil {
            return "", err
        }
        result[i] = charset[n.Int64()]
    }
    return string(result), nil
}

常见问题

生成的密码安全吗?
非常安全。本工具使用浏览器原生的 Web Crypto API(crypto.getRandomValues)生成密码,这是密码学级别的安全随机数生成器,与 1Password、Bitwarden 等专业密码管理器使用的是同一套底层技术。
密码会上传到服务器吗?
不会。所有密码均在你的浏览器本地生成和显示,整个过程不涉及任何网络请求。页面源码完全开放,你可以随时审查确认。即使断网也能正常使用。
密码长度设多少合适?
建议至少 12 位,推荐 16 位以上。12 位混合密码约有 72 bits 熵值,破解需要数百年;16 位则超过 95 bits,可以抵御目前已知的所有暴力破解手段。重要账户建议 20 位以上。
什么是密码熵?
密码熵(Entropy)是衡量密码随机性和安全强度的指标,单位是 bit。计算公式为 log2(字符池大小) x 密码长度。熵值越高,密码越难被暴力破解。一般认为 60 bits 以上为中等强度,80 bits 以上为强密码,128 bits 以上几乎不可能被破解。
为什么要排除易混淆字符?
某些字符在视觉上非常相似,比如数字 0 和字母 O、数字 1 和小写 l、大写 I。当你需要手动抄写或口述密码时,开启此选项可以避免混淆。如果密码只用于复制粘贴,则无需开启。
如何安全存储生成的密码?
强烈建议使用专业密码管理器(如 1Password、Bitwarden、KeePass)保存密码,而非浏览器自带的密码保存功能。切勿将密码保存在明文文件、便签纸或聊天记录中。每个账户应使用不同的密码。