SKILL.md
随机密码生成器#
本技能是一个纯本地、离线的随机密码生成工具:
- 能做什么:按自定义长度、字符集和数量生成随机密码;可排除易混淆字符(0/O、1/l/I 等);可保证每个启用的字符集至少出现一个字符;
- 带不带脚本:带一个 PowerShell 脚本
scripts/New-Password.ps1,仅依赖 .NET 自带的加密随机数生成器,无需安装任何第三方模块; - 联不联网:不联网,不发起任何网络请求;
- 写不写文件:默认只把密码输出到屏幕;只有显式传入
-OutFile参数时才会写入文本文件。
适用场景#
- 为新账号、服务器、数据库或 API 密钥生成强密码;
- 批量生成临时密码或初始口令;
- 满足"长度 ≥ N 且同时包含大小写字母、数字、符号"的密码策略。
使用方法#
在技能目录下打开 PowerShell:
# 生成 1 个 16 位密码(默认)
powershell -ExecutionPolicy Bypass -File .\scripts\New-Password.ps1
# 生成 3 个 20 位密码
.\scripts\New-Password.ps1 -Length 20 -Count 3
# 不含特殊符号,并排除易混淆字符
.\scripts\New-Password.ps1 -Length 24 -NoSymbols -ExcludeAmbiguous
# 仅数字(如生成 6 位数字口令)
.\scripts\New-Password.ps1 -Length 6 -NoLowercase -NoUppercase -NoSymbols
# 写入文件(UTF-8 无 BOM)
.\scripts\New-Password.ps1 -Count 5 -OutFile .\passwords.txt
参数说明#
| 参数 | 说明 | 默认值 |
|---|---|---|
-Length | 密码长度,范围 4~128 | 16 |
-Count | 生成条数,范围 1~100 | 1 |
-ExcludeAmbiguous | 排除易混淆字符:`0 O o 1 l I | ' " |
-NoLowercase | 不使用小写字母 | 关闭 |
-NoUppercase | 不使用大写字母 | 关闭 |
-NoDigits | 不使用数字 | 关闭 |
-NoSymbols | 不使用特殊符号 | 关闭 |
-OutFile | 结果写入指定文件;不传则只输出到屏幕 | 空 |
实现要点#
- 随机源为
System.Security.Cryptography.RandomNumberGenerator(密码学安全),不使用Get-Random; - 采用拒绝采样消除取模偏差,每个字符被选中的概率相等;
- 当长度不小于启用字符集数量时,先从每个字符集各取一个字符,再用 Fisher-Yates 洗牌,保证字符类别齐全且位置随机;
- 兼容 Windows PowerShell 5.1 与 PowerShell 7+。
安全提示#
生成的密码属于敏感信息,使用 -OutFile 时请妥善保管输出文件,不要把它提交到代码仓库或通过不安全渠道传输。
用途与依赖
作者没写,这些是平台读文件后整理的,以文件为准。
使用示例
请求:帮我生成 3 个 20 位密码,不要特殊符号,并排除容易看错的字符。
预期
运行 .\scripts\New-Password.ps1 -Length 20 -Count 3 -NoSymbols -ExcludeAmbiguous,在屏幕上输出 3 条 20 位随机密码,每条都包含大小写字母和数字,且不含 0/O/o/1/l/I/| 等易混淆字符。若用户要求保存,则加 -OutFile 参数写入指定文本文件。
- 适用场景
- 为新账号、服务器、数据库或 API 密钥生成强密码
- 批量生成临时密码或初始口令
- 生成满足“长度 ≥ N 且包含大小写字母、数字、符号”策略的密码
- 生成不含特殊符号的密码
- 生成排除易混淆字符的密码,便于人工抄写
- 生成纯数字口令(如 6 位数字)
- 把批量生成的密码写入文本文件备用
- 输入
- 密码长度(4~128,默认 16)
- 生成条数(1~100,默认 1)
- 是否排除易混淆字符
- 是否禁用小写字母、大写字母、数字、特殊符号中的某一类
- 可选的输出文件路径(-OutFile)
- 输出
- 生成的随机密码(默认输出到屏幕,每条一行)
- 指定 -OutFile 时写入的 UTF-8 无 BOM 文本文件,并提示写入条数与路径
- 运行环境
- Windows PowerShell 5.1 或 PowerShell 7+
- 依赖
- 无

