Python创建高强度密码生成工具方法实例

 更新时间:2023年12月26日 09:47:20   作者:简讯Alfred  
这篇文章主要为大家介绍了Python创建高强度密码生成工具方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

规划项目

学习编程最好的办法就是实际写一个项目,我们这里通过 Python 来编写密码生成器。

在互联网时代,账户就像空气一样常见,创建强大而安全的密码是一项任重道远的任务。虽然密码生成工具数不胜数,但是你有没有想过通过自己的双手来创建一个密码生成工具,让我们来构建一个生成密码的项目吧。

首先,在构建之前、我们需要知道我们想从这个项目中得到什么,这个工具可以生成随机数字、符号和字母组合的密码。

我们在构建项目时可以学到以下内容:

  • • 变量和数据类型

  • • 用户输入和输出

  • • 条件语句(if-else)

  • • 随机数生成

  • • 函数

我们了解我们的目标之后,继续说明这个密码工具的流程:

  • • 获取密码长度,在这里我把 12 作为默认长度

  • • 创建字符池(小写、大写、符号、数字)

  • • 生成密码

创建项目

1. 导入库

首先要导入两个必要的库:string 和 random

string 库提供各种与字符串相关的函数和常量。它包含 ascii_lowercaseascii_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创建密码生成工具的资料请关注脚本之家其它相关文章!

相关文章

  • Python答题卡识别并给出分数的实现代码

    Python答题卡识别并给出分数的实现代码

    本文带领大家学习Python答题卡识别并给出分数的实现代码,代码实现思路清晰,简单易懂,Python识别答题卡相关知识感兴趣的朋友一起看看吧
    2021-06-06
  • 6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

    6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​

    这篇文章主要介绍了6行Python代码实现进度条效果(Progress、tqdm、alive-progress和PySimpleGUI库),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • matplotlib设置legend图例代码示例

    matplotlib设置legend图例代码示例

    这篇文章主要介绍了matplotlib设置legend图例代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • pycharm中报ModuleNotFoundError:No module named 'tensorflow'错误解决

    pycharm中报ModuleNotFoundError:No module named 'tensor

    这篇文章主要给大家介绍了关于pycharm中报ModuleNotFoundError:No module named 'tensorflow'错误的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python 使用tkinter与messagebox写界面和弹窗

    python 使用tkinter与messagebox写界面和弹窗

    这篇文章主要介绍了python 使用tkinter与messagebox写界面和弹窗,文章内容详细,具有一的的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • python使用sorted函数对列表进行排序的方法

    python使用sorted函数对列表进行排序的方法

    这篇文章主要介绍了python使用sorted函数对列表进行排序的方法,涉及Python使用sorted函数的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • python将音频进行变速的操作方法

    python将音频进行变速的操作方法

    这篇文章主要介绍了python将音频进行变速的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 解决pyqt5异常退出无提示信息的问题

    解决pyqt5异常退出无提示信息的问题

    这篇文章主要介绍了解决pyqt5异常退出无提示信息的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • PyCharm代码格式调整方法

    PyCharm代码格式调整方法

    今天小编就为大家分享一篇PyCharm代码格式调整方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python语法中的模糊语义

    Python语法中的模糊语义

    这篇文章主要介绍的是Python语法中的模糊语义,下面文章具体内容包括切片不执行越界检查和报错、空列表的创建、闭包的延迟绑定,需要的朋友可以参考一下
    2021-11-11

最新评论