密码是一种身份验证和数据保护的重要工具,常见的有日常生活中各种的账号密码,生成一个可以自己设计,那对于数据库中众多的用户,怎么生成批量密码呢?本文主要介绍使用Python生成单个和批量用户密码;
介绍熟悉一些常用的密码字符,常见的英文字母、数字和特殊标点字符;
生成单个用户密码,从所选字符集中随机选择字符,最终生成指定长度的密码;
生成批量用户密码,根据生成单个用户密码进行封装成程序,使之可以生成任意数量和长度的用户密码;
首先介绍一下一些常见的字符;
print(string.ascii_lowercase) # 小写英文字母 print(string.ascii_uppercase) # 大写英文字母 print(string.ascii_letters) # 大小写英文字母 print(string.digits) # 0-9数字 print(string.punctuation) # 特殊标点字符 string.whitespace # 转义字符,等打印被视为空白的字符串
string.printable # 大小写英文字母、0-9数字、特殊标点字符、转义字符,等打印被视为空白的字符串
以上是最基本的字符,如果不清楚可以前往Python 官网查看和扩展;
然后根据字符编写随机生成单个用户ID和密码函数并测试;
import random import string def generate_random_password(length): '''生成指定长度的密码''' # 定义可选的字符集 chars_set = string.ascii_letters + string.digits + string.punctuation # 从字符集中随机选择字符进行组合拼接至指定长度 password = ''.join(random.choice(chars_set) for i in range(length)) return password # 假设用户ID是10位数字 user_id = ''.join(random.choice(string.digits) for i in range(10)) print('user_id:',user_id,'\npassword:',generate_random_password(30))
根据前面的步骤,进一步编写函数生成批量用户ID和密码;
def generate_users_password(num,psd_length): '''生成批量用户和密码''' # 定义空列表 user_passwords = [] for i in range(num): # 假设用户ID是10位数字,可调整 user_id = ''.join(random.choice(string.digits) for i in range(10)) # 调用生成指定长度密码的函数 password = generate_random_password(psd_length) # 根据数量进行用户和密码拼接 user_passwords.append((user_id,password)) return user_passwords generate_users_password(10,30)
最后将代码组合起来,并且进行修饰封装成程序,使之可以生成任意数量和长度的用户密码:
import random import string import pandas as pd def generate_random_password(length): '''生成指定长度的密码''' # 定义可选的字符集 chars_set = string.ascii_letters + string.digits + string.punctuation # 从字符集中随机选择字符进行组合拼接至指定长度 password = ''.join(random.choice(chars_set) for i in range(length)) return password def generate_user_password(num,psd_length): '''生成批量用户和密码''' user_passwords = [] for i in range(num): # 假设用户ID是10位数字,可调整 user_id = ''.join(random.choice(string.digits) for i in range(10)) # 调用生成指定长度密码的函数 password = generate_random_password(psd_length) # 根据数量进行用户和密码拼接 user_passwords.append((user_id,password)) return user_passwords if __name__ == '__main__': num = int(input('请输入需要生成的用户和密码数量:')) psd_length = int(input('请输入需要生成的密码长度:')) df = pd.DataFrame(generate_user_password(num,psd_length), columns=['user_id', 'password']) print(df.to_markdown(index=False))