使用Python的random和string库生成大写字母、小写字母、数字、特殊字符(14个)这四种字符组合的复杂度较高的随机密码。精选特殊字符,兼容性好。😛
# conding: utf-8
import random
import string
import logging
logging.basicConfig(level=logging.INFO)
def new_password(password_length=10) -> string:
"""
生成指定长度(8到32位)的随机密码,默认10位。
"""
if password_length < 8:
logging.warning("警告:密码长度不能小于8,输入的密码长度为:{}".format(password_length))
password_length = 8
if password_length > 32:
logging.warning("警告:密码长度不能大于32,输入的密码长度为:{}".format(password_length))
password_length = 32
special_chars = "!@#$%^&*()_+-="
special_chars_num = random.randint(1, 2)
digits_num = random.randint(1, 3)
upper_chars_num = (password_length - special_chars_num - digits_num) // 2
lower_chars_num = (password_length - special_chars_num - digits_num - upper_chars_num)
password_chars = random.sample(special_chars, special_chars_num) + \
random.sample(string.digits, digits_num) + \
random.sample(string.ascii_uppercase, upper_chars_num) + \
random.sample(string.ascii_lowercase, lower_chars_num)
password = ''.join(random.sample(password_chars, password_length))
return password
print(new_password())