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创建密码生成工具的资料请关注脚本之家其它相关文章!

相关文章

  • 使用Pycharm分段执行代码

    使用Pycharm分段执行代码

    这篇文章主要介绍了使用Pycharm分段执行代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python浅析多态与鸭子类型使用实例

    Python浅析多态与鸭子类型使用实例

    python是一门解释语言,但是同java等静态语言一样,是可以通过继承的方式实现多态。而且python还有一个自己的特殊实现多态的方法,就是通过鸭子类型,来实现多态
    2022-10-10
  • python3中celery异步框架简单使用+守护进程方式启动

    python3中celery异步框架简单使用+守护进程方式启动

    这篇文章主要介绍了python3中celery异步框架简单使用+守护进程方式启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 将TensorFlow的模型网络导出为单个文件的方法

    将TensorFlow的模型网络导出为单个文件的方法

    本篇文章主要介绍了将TensorFlow的网络导出为单个文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • python爬虫豆瓣网的模拟登录实现

    python爬虫豆瓣网的模拟登录实现

    这篇文章主要介绍了python爬虫豆瓣网的模拟登录实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 如何利用Python写猜数字和字母的游戏

    如何利用Python写猜数字和字母的游戏

    这篇文章主要介绍了如何利用Python写猜数字和字母的游戏,文章基于Python实现游戏小项目,感兴趣的朋友可以参考一下
    2022-07-07
  • Python网络通讯之TCP协议实现服务器和客户端实例

    Python网络通讯之TCP协议实现服务器和客户端实例

    这篇文章主要介绍了Python网络通讯之TCP协议实现服务器和客户端实例, socket编程一种独立于协议的网络编程接口,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作,需要的朋友可以参考下
    2023-08-08
  • Python中文字符串截取问题

    Python中文字符串截取问题

    web应用难免会截取字符串的需求,Python中截取英文很容易,但是截取utf-8的中文机会截取一半导致一些不是乱码的乱码.其实utf8截取很简单,这里记下来分享给大家
    2015-06-06
  • Python缺少库IPython的解决办法步骤

    Python缺少库IPython的解决办法步骤

    在使用Python编写程序过程中,有时我们会遇到一些错误信息,提示我们当前环境缺少某些依赖库文件,这篇文章主要给大家介绍了关于Python缺少库IPython的解决办法步骤,需要的朋友可以参考下
    2023-12-12
  • python中class(object)的含义是什么以及用法

    python中class(object)的含义是什么以及用法

    这篇文章主要介绍了python中class(object)的含义是什么以及用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论