本文目录导读:

Python 脚本(最灵活)
import random
import string
import secrets
def generate_password(length=12):
"""生成单个随机密码"""
# 定义字符集
chars = string.ascii_letters + string.digits + "!@#$%^&*"
# 使用 secrets 模块生成更安全的随机密码
password = ''.join(secrets.choice(chars) for _ in range(length))
return password
def batch_generate(count=10, length=12):
"""批量生成密码"""
passwords = []
for i in range(count):
pw = generate_password(length)
passwords.append(f"Password_{i+1}: {pw}")
return passwords
# 生成 10 个 16 位的密码
result = batch_generate(10, 16)
for pw in result:
print(pw)
# 保存到文件
with open('passwords.txt', 'w', encoding='utf-8') as f:
f.write('\n'.join(result))
Bash Shell 脚本(Linux/Mac)
#!/bin/bash
# 批量生成随机密码
# 方法1:使用 /dev/urandom
generate_passwords() {
local count=${1:-10}
local length=${2:-16}
for i in $(seq 1 $count); do
# 从 /dev/urandom 读取并转换为可打印字符
password=$(tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c $length)
echo "Password_$i: $password"
done
}
# 方法2:使用 openssl
generate_passwords_openssl() {
local count=${1:-10}
local length=${2:-16}
for i in $(seq 1 $count); do
password=$(openssl rand -base64 48 | head -c $length)
echo "Password_$i: $password"
done
}
# 生成 10 个 16 位密码
generate_passwords 10 16 > passwords.txt
PowerShell 脚本(Windows)
# 批量生成随机密码
function Generate-Password {
param(
[int]$Length = 12
)
# 定义字符集
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*'
# 使用 .NET 的加密随机数生成器
$rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$bytes = [byte[]]::new($Length)
$rng.GetBytes($bytes)
$password = -join ($bytes | ForEach-Object {
$chars[$_ % $chars.Length]
})
return $password
}
function Batch-Generate {
param(
[int]$Count = 10,
[int]$Length = 12
)
$results = for ($i = 1; $i -le $Count; $i++) {
$password = Generate-Password -Length $Length
"Password_$i`: $password"
}
return $results
}
# 生成并保存
$passwords = Batch-Generate -Count 10 -Length 16
$passwords | Out-File -FilePath "passwords.txt" -Encoding UTF8
一键生成命令
Linux/Mac(单行命令)
# 生成10个16位密码
for i in {1..10}; do tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 16 && echo; done
Windows CMD
@echo off
:: 生成5个8位密码
for /L %%i in (1,1,5) do (
set "pwd="
for /L %%j in (1,1,8) do (
set /a "r=!random! %% 62"
for /F "tokens=!r!" %%a in ("a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9") do set "pwd=!pwd!%%a"
)
echo Password_%%i: !pwd!
)
高级版本 - 可自定义规则
import secrets
import string
import sys
class PasswordGenerator:
def __init__(self):
self.lowercase = string.ascii_lowercase
self.uppercase = string.ascii_uppercase
self.digits = string.digits
self.special = "!@#$%^&*_-+=<>?"
def generate(self, length=12, use_upper=True, use_lower=True,
use_digits=True, use_special=True):
"""生成自定义规则的密码"""
chars = ""
if use_upper:
chars += self.uppercase
if use_lower:
chars += self.lowercase
if use_digits:
chars += self.digits
if use_special:
chars += self.special
if not chars:
raise ValueError("至少需要选择一种字符类型")
# 确保每种类型至少包含一个字符
password = []
if use_upper:
password.append(secrets.choice(self.uppercase))
if use_lower:
password.append(secrets.choice(self.lowercase))
if use_digits:
password.append(secrets.choice(self.digits))
if use_special:
password.append(secrets.choice(self.special))
# 填充剩余长度
remaining = length - len(password)
password.extend(secrets.choice(chars) for _ in range(remaining))
# 打乱顺序
secrets.SystemRandom().shuffle(password)
return ''.join(password)
def batch_generate(self, count=10, **kwargs):
"""批量生成"""
return [self.generate(**kwargs) for _ in range(count)]
# 使用示例
gen = PasswordGenerator()
# 生成10个16位密码,包含所有字符类型
passwords = gen.batch_generate(count=10, length=16)
for i, pw in enumerate(passwords, 1):
print(f"Password_{i}: {pw}")
使用建议
- 安全考虑:使用
secrets或/dev/urandom而非随机模块 - 长度建议:至少12位,推荐16位以上
- 字符组合:包含大写、小写、数字和特殊字符
- 存储安全:生成后立即加密保存,处理后删除临时文件
- 避免冲突:可添加检查重复的机制
选择最适合你的使用场景的方法即可!