文章目录

这次实践做个简单实用的玩意,指定长度的随机密码。

自己是 LastPass app的忠实用户,生成随机密码的功能也经常用到,今天来实现一下。

首先导入 randommath 这两个自带库,并定义好组成密码的字符串内容。同时,也展示一个交互对话,让用户输入期望的密码长度。

1
2
3
4
5
6
7
8
import random
import math

alpha = "abcdefghijklmnopqrstuvwxyz"
num = "0123456789"
special = "@#$%&*!^"

pass_len = int(input("Enter Password Length: "))

然后,根据输入的长度,先分别生成字母、数字、特殊字符所需要的长度。

1
2
3
4
5
alpha_len = pass_len//2
num_len = math.ceil(pass_len*30/100)
special_len = pass_len-(alpha_len+num_len)

password = []

接下来定义关键方法,在这里处理所有的字符串:

1
2
3
4
5
6
7
8
9
def generate_pass(length, array, is_alpha=False):
for i in range(length):
index = random.randint(0, len(array) - 1)
character = array[index]
if is_alpha:
case = random.randint(0, 1)
if case == 1:
character = character.upper()
password.append(character)

最后,调用处理密码字符串的方法,合并所有处理好的字符串,并随机排列一次,打印出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 英文字母
generate_pass(alpha_len, alpha, True)
# 数字
generate_pass(num_len, num)
# 特殊字符
generate_pass(special_len, special)
# 随机排列所有字符
random.shuffle(password)
# convert List To string
gen_password = ""
for i in password:
gen_password = gen_password + str(i)
print(gen_password)

附上完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import random
import math

alpha = "abcdefghijklmnopqrstuvwxyz"
num = "0123456789"
special = "@#$%&*!^"

pass_len = int(input("Enter Password Length: "))

alpha_len = pass_len//2
num_len = math.ceil(pass_len*30/100)
special_len = pass_len-(alpha_len+num_len)

password = []

def generate_pass(length, array, is_alpha=False):
for i in range(length):
index = random.randint(0, len(array) - 1)
character = array[index]
if is_alpha:
case = random.randint(0, 1)
if case == 1:
character = character.upper()
password.append(character)

# 英文字母
generate_pass(alpha_len, alpha, True)
# 数字
generate_pass(num_len, num)
# 特殊字符
generate_pass(special_len, special)
# 随机排列所有字符
random.shuffle(password)
# convert List To string
gen_password = ""
for i in password:
gen_password = gen_password + str(i)
print(gen_password)

♦ 本文固定连接:https://www.gsgundam.com/archive/2022-07-13-how-to-generate-random-password-python/

♦ 转载请注明:GSGundam 2022年07月13日发布于 GSGUNDAM砍柴工

♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)

♦ 本文总阅读量