利用python制作密码生成器

2023-11-12 10:16:41 浏览数 (2)

1 问题

如何使用python制作一个密码生成器。

2 方法

通过类的程序来生成一个非常随机的密码

代码清单 1

代码语言:javascript复制
def get_upper():
   count = random.randint(1, 3)
   return random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZ', k=count)
def get_special_char():
   '''
   生成特殊符号
   :return:
   '''
   count = random.randint(1, 3)
   return random.choices('!@$%^&*()_ ~', k=count)
def get_lower(count):
   '''
   生成小写字母和数字
   :param count:
   :return:
   '''
   string = 'abcdefghijklmnopqrstuvwxyz0123456789'
   return random.choices(string, k=count)
def generate_password(length):
   '''
   生成指定长度的密码
   :param length:
   :return:
   '''
   if length < 6:
       length = 6
   lst = []
   upper_lst = get_upper()     # 大写
   special_char = get_special_char()      # 特殊字符
   lst.extend(upper_lst)
   lst.extend(special_char)
   surplus_count = length - len(lst)
   lower_lst = get_lower(surplus_count)
   lst.extend(lower_lst)
   # 将顺序打乱
   random.shuffle(lst)
   return ''.join(lst)
import random
def get_upper():
   '''
   生成大写字母
   :return:
   '''
   count = random.randint(1, 3)
   return random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZ', k=count)
def get_special_char():
   '''
   生成特殊符号
   :return:
   '''
   count = random.randint(1, 3)
   return random.choices('!@$%^&*()_ ~', k=count)
def get_lower(count):
   '''
   生成小写字母和数字
   :param count:
   :return:
   '''
   string = 'abcdefghijklmnopqrstuvwxyz0123456789'
   return random.choices(string, k=count)
def generate_password(length):
   '''
   生成指定长度的密码
   :param length:
   :return:
   '''
   if length < 6:
       length = 6
   lst = []
   upper_lst = get_upper()     # 大写
   special_char = get_special_char()      # 特殊字符
   lst.extend(upper_lst)
   lst.extend(special_char)
   surplus_count = length - len(lst)
   lower_lst = get_lower(surplus_count)
   lst.extend(lower_lst)
   # 将顺序打乱
   random.shuffle(lst)
   return ''.join(lst)
if __name__ == '__main__':
   print(generate_password(8))
   print(generate_password(5))
   print(generate_password(12))

3 结语

针对利用python制作密码生成器的问题,提出类的方法,通过程序设计实验,证明该方法是有效的,本文较为基础,算法较为模糊,在后期完善中可以将算法做的更为简单和清晰,增加更多的功能,例如能够写出一个代码简便美观的程序。

0 人点赞