详解如何通过Python制作一个密码生成器

 更新时间:2023年05月07日 10:20:15   作者:winfredzhang  
定期更换密码是一种非常重要的安全措施,这种做法可以有效地保护你的账户和个人信息不受黑客和网络攻击者的侵害。所以本文就来用Python制作一个密码生成器吧

原由

定期更换密码是一种非常重要的安全措施,这种做法可以有效地保护你的账户和个人信息不受黑客和网络攻击者的侵害。

密码泄露是一个非常普遍的问题,许多人的账户和密码经常会被泄露出来,导致个人信息被盗用、金融损失、恶意软件感染等严重问题。定期更换密码可以减少这种风险,因为即使你的密码被盗了,攻击者也只能获得你的信息和权限一段时间。

此外,定期更换密码还可以提高你的账户安全性,因为许多人使用相同的密码和用户名登录多个网站和服务,如果一个密码被盗,黑客可以轻松地访问其他帐户。通过定期更换密码,可以确保你的密码不会被黑客用于其他服务,从而提高你的安全性。

编程思路

首先导入了 Python 的 tkinter 模块和之前编写的生成随机密码的函数。然后,定义了一个 generate_callback 回调函数,用于生成随机密码,并将其显示在密码编辑框中。

在 generate_callback 函数中,首先使用 password_length_var.get() 获取用户输入的密码长度,然后调用之前编写的 generate_password 函数生成密码。最后,使用 password_edit.delete() 和 password_edit.insert() 方法将密码显示在密码编辑框中。

在主程序中,使用 tk.Label 和 tk.Entry 创建标签和输入框,用于输入密码长度。然后,使用 tk.Button 创建生成按钮,并将 generate_callback 函数指定为回调函数。接着,使用 tk.Label 和 tk.Entry 创建密码编辑框,用于显示生成的密码。

最后,使用 tk.mainloop() 进入主事件循环,等待用户操作。当用户点击生成按钮时,程序将自动调用 generate_callback 函数生成随机密码,并将其显示在密码编辑框中。

代码

import tkinter as tk
import random
import string
 
def generate_password(length):
    # 可以自定义密码中包含的字符集
    characters = string.ascii_letters + string.digits
    # 生成指定长度的随机密码
    password = ''.join(random.choice(characters) for i in range(length))
    return password
 
def generate_callback():
    # 获取密码长度
    password_length = int(password_length_var.get())
    # 生成密码
    password = generate_password(password_length)
    # 将密码显示在编辑框中
    password_edit.delete(0, tk.END)
    password_edit.insert(0, password)
 
# 创建主窗口
root = tk.Tk()
root.title("生成随机密码")
 
# 创建标签和输入框,用于输入密码长度
password_length_label = tk.Label(root, text="请输入要生成的密码长度:")
password_length_label.grid(row=0, column=0, padx=5, pady=5)
password_length_var = tk.StringVar()
password_length_edit = tk.Entry(root, textvariable=password_length_var)
password_length_edit.grid(row=0, column=1, padx=5, pady=5)
 
# 创建生成按钮
generate_button = tk.Button(root, text="生成密码", command=generate_callback)
generate_button.grid(row=1, column=0, padx=5, pady=5)
 
# 创建密码编辑框,用于显示生成的密码
password_edit_label = tk.Label(root, text="生成的密码:")
password_edit_label.grid(row=2, column=0, padx=5, pady=5)
password_edit = tk.Entry(root)
password_edit.grid(row=2, column=1, padx=5, pady=5)
 
# 进入主事件循环
root.mainloop()

效果如下

补充

除了上文的方法,小白还为大家准备了其他的Python实现密码生成的方法,需要的可以参考一下

python 随机生成密码

# 这里主要是以ascii码去表示上诉的字符串
#表示26个字母,查询ascci码的表示是65, 90,但是我是使用range表示,左闭右开,步长为一
import random
total_len = 12 #密码总长为12 
daxiezimu = range(65,91, 1)  # 定义26个大写字母列表
xiaoxiezimu = range(97, 123, 1)  # 定义26个大写字母列表
shuzi = range(48, 58, 1) # 定义0-9个数字
teshuzifu = [64, 63, 96]  # 定义特殊字符@ ? \ 特殊字符就给了一个列表,因为assci码没有连续的
random3_list = [daxiezimu, xiaoxiezimu, teshuzifu]
for i in random3_list: # 循环需要随机生成0-3位的大小写字母跟特殊字符
    for j in range(random.randint(1, 3)): # 随机循环0-3的次数
       res.append(chr(random.choice(i))) # chr将ascii码转为字符 random.choice(i)随机从i中取出一个数
x = total_len - len(res) #需要生成x位长度的数字
for k in range(x):  #需要生成多少位的数字就循环几次
    res.append(chr(random.choice(shuzi)))
random.shuffle(res)   # random.shuffle(列表对象)  用来打乱列表

Python实现密码生成器

import random
import string

from gooey import GooeyParser,Gooey
@Gooey(encoding='utf8',program_name='强密码生成器',program_description='用于生成包含大小写字母、数字、特殊符号的强密码',optional_cols=1)
def stronge_password():
parse = GooeyParser(description='用于生成包含大小写字母、数字、特殊符号的强密码')
parse.add_argument('数量',widget='TextField')
parse.add_argument('长度',widget='TextField')
parse.add_argument('数字',widget='Dropdown',choices={"是":1,"否":0},default='是')
parse.add_argument('大写字母',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('小写字母',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('特殊符号',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('去除词',widget='TextField',default='None')
args = parse.parse_args()
if args.数字 == "是":
digits = list(string.digits.strip())
else:
digits = []
if args.大写字母:
upper = list(string.ascii_uppercase)
else:
upper = []
if args.小写字母:
lower = list(string.ascii_lowercase)
else:
lower = []
if args.特殊符号:
symbol = list("~!@#$%^&*()_+{}[]/?")
else:
symbol = []
if args.去除词 != 'None':
stop_word = list(args.去除词.strip())
else:
stop_word = []
letter_list = digits + upper + lower + symbol
for item in stop_word:
if item in letter_list:
letter_list.remove(item)
for i in range(int(args.数量)):
result = ''.join([random.choice(letter_list) for i in range(int(args.长度))])
print(result)

if __name__ == '__main__':
stronge_password()

到此这篇关于详解如何通过Python制作一个密码生成器的文章就介绍到这了,更多相关Python密码生成器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 爬虫Python验证码识别入门

    爬虫Python验证码识别入门

    这篇文章主要介绍了爬虫Python验证码识别,属于入门级别的介绍,刚接触爬虫的朋友可以参考如下
    2021-08-08
  • 人工智能——K-Means聚类算法及Python实现

    人工智能——K-Means聚类算法及Python实现

    这篇文章主要介绍了人工智能——K-Means聚类算法及Python实现,一个能够找到我圈出的这 些点集的算法,就被称为聚类算法,下面就来看看文章具体的介绍吧
    2022-01-01
  • Jinja2实现模板渲染与访问对象属性流程详解

    Jinja2实现模板渲染与访问对象属性流程详解

    要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强,并且更加容易理解和维护。模板简单来说就是一个其中包含占位变量表示动态部分的文,模板文件在经过动态赋值后,返回给用户
    2023-03-03
  • 详解Python多线程

    详解Python多线程

    这篇文章主要为大家详细介绍了Python多线程的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Flask中sqlalchemy模块的实例用法

    Flask中sqlalchemy模块的实例用法

    在本篇文章里小编给大家整理了关于Flask中sqlalchemy模块的实例用法,需要的朋友们可以学习下。
    2020-08-08
  • Python三种打包exe方法案例教程

    Python三种打包exe方法案例教程

    这篇文章主要介绍了Python三种打包exe方法案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • python实现的正则表达式功能入门教程【经典】

    python实现的正则表达式功能入门教程【经典】

    这篇文章主要介绍了python实现的正则表达式功能,详细分析了Python正则表达式中常用的各种符号、函数等的使用方法与注意事项,需要的朋友可以参考下
    2017-06-06
  • Python中eval函数的表达式作用示例

    Python中eval函数的表达式作用示例

    这篇文章主要介绍了Python中eval函数的表达式用法示例,文中通过示例对比来为大家进行详细的讲解,有需要的朋友可以借鉴参下,希望有所帮助
    2021-09-09
  • Python实现按当前日期(年、月、日)创建多级目录的方法

    Python实现按当前日期(年、月、日)创建多级目录的方法

    这篇文章主要介绍了Python 按当前日期(年、月、日)创建多级目录的方法,实现代码很简单,需要的朋友可以参考下
    2018-04-04
  • TensorFlow绘制loss/accuracy曲线的实例

    TensorFlow绘制loss/accuracy曲线的实例

    今天小编就为大家分享一篇TensorFlow绘制loss/accuracy曲线的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01

最新评论