随机密码生成器version 0.1

这是一个Python实现的随机密码生成器,能够根据用户输入的长度生成高强度密码,并将其与网站或软件名称、用户名一起保存到txt文件中。程序还包括一个简单的命令行界面,用户可以选择生成新的密码或保存已有密码。后续计划加入GUI和网页版功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇仅供个人学习参考
更新日志
2022.7.22 当前程序在编辑软件上可用,同时在学习其他内容,暂不做更新,若后续找到了更好的方法会升级该程序。

version 0.1

main.py 主程序

  • 输入密码长度
  • 运行randomKey()得到随机数
  • 运行savetxt将数据存储
  • 显示结果
from randomKey import randomKey
from savetxt import savetxt

if __name__ == '__main__':
    
    key = randomKey() # 需要实例化
    txt = savetxt()
    txt.createSaveFile()
    while True:
        print('-------------------------------')
        print('-------* 随机密码生成器 *-------')
        print('-------- 1 生成随机密码 --------')
        print('-------- 2 保存已有密码 --------')
        print('-------- 3   退出程序 ----------')
        print('-------------------------------')
        print('请输入执行程序:')
        t = input()
        if t == '1':
            while True:
                website = input('请输入网站名称或软件名称:')
                username = input('请输入用户名:')
                passwordLength = int(input('请输入你想要的密码长度(9-25):'))
                # 生成高强度随机密码(大小写英文字符 + 数字 + 特殊字符)
                password = key.Key(passwordLength)
                # 显示生成密码
                # print(password)
                txt.saveFile(website,username,password)
                print('========================')
                print('== 1 继续生成随机密码  ==')
                print('== 2 返回上一层        ==')
                print('========================')
                pd_01 = input('请输入序号:')
                if pd_01 == '1':
                    continue
                elif pd_01 == '2':
                    break
                else:
                    print('请输入正确的序号!')
                    continue
        elif t == '2':
            while True:
                website = input('请输入网站名称或软件名称:')
                username = input('请输入用户名:')
                password = input('请输入你的密码:')
                txt.saveFile(website,username,password)
                print('========================')
                print('== 1 继续保存账号密码  ==')
                print('== 2 返回上一层        ==')
                print('========================')
                pd_02 = input('请输入序号:')
                if pd_02 == '1':
                    continue
                elif pd_02 == '2':
                    break
                else:
                    print('请输入正确的序号!')
                    continue
        elif t == '3':
            break
        else:
            print('输入指令有误,请重新输入!')
            continue

savetxt 将内容存储到txt文件夹

  • Step1:判断当前路径下是否存在Save文件夹,若不存在,则创建Save文件夹;若存在,则Step2
  • Step2:将密码写入key.txt文件(不覆盖’a’;覆盖’w’)

保存结构:

网站名称(软件名称)用户名(账户名称)密码
qq123456789zz123456789
csdn123456789zz123456789
import os

class savetxt:
    def __init__(self) -> None:
        self.dir_path = os.getcwd() + r'\Save' # 绝对路径
        self.file_path = self.dir_path + '\\key.txt'
    
    def createSaveFile(self):
        if not os.path.exists(self.dir_path):
            os.makedirs(self.dir_path)
            print(self.dir_path + "创建成功")
        else:
            print(self.dir_path,"已经存在该目录")
    
    def saveFile(self,website,username,content):
        with open(self.file_path,'a',encoding='utf-8') as f:
            f.write(website+':'+username+' '+content)
            f.write('\n')
            print("保存成功!")
            f.close()

randomKey 产生高强度随机密码

  • 获取所需密码长度,返回结果
import random

class randomKey:
    
    def __init__(self) -> None:
        
        # 初始化
        englishUperChar = [chr(i) for i in range(65,91)]
        englishLowerChar = [chr(i) for i in range(97,123)]
        numberChar = [chr(i) for i in range(48,58)]
        symbolChar = ['.',' ','@','$','!','%','*','#','_','~','?','&','^']
        self.eLUNChar = englishUperChar + englishLowerChar + numberChar + symbolChar
        # 打乱初始化列表
        random.shuffle(self.eLUNChar)
    
    def Key(self,passwordLength): # 方法需要实例化
        try:
            if (passwordLength < 9) or (passwordLength > 25):
                return 'Out of range, Please check the number you entered'
            password = ''
            for i in range(int(passwordLength)):
                password = password + self.eLUNChar[random.randint(0,len(self.eLUNChar)-1)]
            return password
        except Exception as err:
            return err

后记:

1. 打算在version 0.2加入GUI,打算用tkinter尝试,最后打包成exe文件
2. 后续同时打算加入web网页作为尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值