Python创建高强度密码生成工具方法实例
规划项目
学习编程最好的办法就是实际写一个项目,我们这里通过 Python 来编写密码生成器。
在互联网时代,账户就像空气一样常见,创建强大而安全的密码是一项任重道远的任务。虽然密码生成工具数不胜数,但是你有没有想过通过自己的双手来创建一个密码生成工具,让我们来构建一个生成密码的项目吧。
首先,在构建之前、我们需要知道我们想从这个项目中得到什么,这个工具可以生成随机数字、符号和字母组合的密码。
我们在构建项目时可以学到以下内容:
• 变量和数据类型
• 用户输入和输出
• 条件语句(if-else)
• 随机数生成
• 函数
我们了解我们的目标之后,继续说明这个密码工具的流程:
• 获取密码长度,在这里我把 12 作为默认长度
• 创建字符池(小写、大写、符号、数字)
• 生成密码
创建项目
1. 导入库
首先要导入两个必要的库:string
和 random
。
string
库提供各种与字符串相关的函数和常量。它包含 ascii_lowercase
、ascii_uppercase
、标点符号和数字常量,分别代表相应的字符集。
random
库提供生成随机数和序列的函数。它包含 choice()
函数,可从给定序列中随机选择一个元素。
import string import random
2. 定义 generate_password() 函数
generate_password()
函数是密码生成器的核心。它接受一个指定所需密码长度的可选参数 length
。
这个函数包含一个默认参数 length
,密码字符长度,如果不提供这个参数,那么就默认使用 12 的长度。
字符池(character pool
)的生成来自 string
这个库,包含了小写字母 ascii_lowercase
,大写字母 ascii_uppercase
、标点符号 punctuation
和数字 digits
。
然后从字符池中随机添加一个字符到 password
字符串中。可以理解为不断累加到 length
限制的长度。
def generate_password(length=12): # 定义 character pool character_pool = string.ascii_lowercase + string.ascii_uppercase + string.punctuation + string.digits password = "" for _ in range(length): password += random.choice(character_pool) return password
3. 生成并展示密码
在函数外部,代码调用 generate_password()
函数生成随机密码。它将生成的密码赋值给 generated_password
变量,并使用 print()
将其显示给用户。
generated_password = generate_password() print("你的密码是:", generated_password)
不如我们为密码生成器增加一些功能:
• 可以输入密码的长度
• 可以选择是否使用符号、数字和大写字母。
好了,让我们在项目中添加新代码。
4. 定义字符集
lowercase_letters = string.ascii_lowercase uppercase_letters = string.ascii_uppercase symbols = string.punctuation numbers = string.digits
这几行代码定义了四个变量:小写字母、大写字母、符号和数字。每个变量都包含一个字符串,其中包含相应的字符集。string
模块提供了这些常量,以便于访问不同的字符组。
5. 根据用户指定的标准创建密码
character_pool = lowercase_letters if include_symbols: character_pool += symbols if include_numbers: character_pool += numbers if include_uppercase: character_pool += uppercase_letters
这些 if
语句会检查用户输入的每种字符类型(符号、数字、大写字母)。如果用户表示要包含特定的字符类型,相应的字符集就会附加到 character_pool
字符串中。这样可以确保密码生成器在生成密码时添加指定的字符类型。
6. 生成密码
for _ in range(length): password += random.choice(character_pool) return password
此循环迭代 length
次,其中 length
为指定的密码长度。在每次迭代中,使用 random.choice()
函数从字符库中随机选择一个字符。最后将返回密码字符串。
7. 获取用户输入的密码标准
password_length = int(input("请输入密码长度:")) include_symbols = input("包含标点符号 (y/n): ") == "y" include_numbers = input("包含数字 (y/n): ") == "y" include_uppercase = input("包含大写字母 (y/n): ") == "y"
这几行代码用来收集用户对密码标准(长度、符号、数字和大写字母)的要求,并将其存储在相应的变量中。
运行代码
基础代码:
import string import random def generate_password(length=12): # 定义 character pool character_pool = string.ascii_lowercase + string.ascii_uppercase + string.punctuation + string.digits password = "" for _ in range(length): password += random.choice(character_pool) return password # 生成并展示密码 generated_password = generate_password() print("你生成的密码是:", generated_password) # 运行结果 # 你生成的密码是:\{Ckz<@svHN!
完善后的代码
允许用户指定生成高强度的安全密码:
import string import random def generate_password(length=12, include_symbols=True, include_numbers=True, include_uppercase=True): password = "" # 定义字符集 lowercase_letters = string.ascii_lowercase uppercase_letters = string.ascii_uppercase symbols = string.punctuation numbers = string.digits # 基于用户的要求创建字符池 character_pool = lowercase_letters if include_symbols: character_pool += symbols if include_numbers: character_pool += numbers if include_uppercase: character_pool += uppercase_letters # 生成密码 for _ in range(length): password += random.choice(character_pool) return password # 根据用户输入来确定密码要求 password_length = int(input("请输入密码长度:")) include_symbols = input("包含标点符号 (y/n):") == "y" include_numbers = input("包含数字 (y/n):") == "y" include_uppercase = input("包含大写字母 (y/n):") == "y" # 生成并展示密码 generated_password = generate_password(password_length, include_symbols, include_numbers, include_uppercase) print("你生成的密码是:", generated_password)
运行结果
请输入密码长度:6
包含标点符号(y/n):y
包含数字 (y/n):y
包含大写字母 (y/n):y
你生成的密码是:z-=Sx<
这份代码所构建的密码生成器是一款简单有效的密码生成工具。它允许用户自定义密码长度和字符类型,用途广泛,可满足个人需求。
以上就是Python创建高强度密码生成工具方法实例的详细内容,更多关于Python创建密码生成工具的资料请关注脚本之家其它相关文章!
相关文章
6行Python代码实现进度条效果(Progress、tqdm、alive-progress
这篇文章主要介绍了6行Python代码实现进度条效果(Progress、tqdm、alive-progress和PySimpleGUI库),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01pycharm中报ModuleNotFoundError:No module named 'tensor
这篇文章主要给大家介绍了关于pycharm中报ModuleNotFoundError:No module named 'tensorflow'错误的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-07-07python 使用tkinter与messagebox写界面和弹窗
这篇文章主要介绍了python 使用tkinter与messagebox写界面和弹窗,文章内容详细,具有一的的参考价值,需要的小伙伴可以参考一下2022-03-03
最新评论