前言
本篇仅供个人学习参考
更新日志
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’)
保存结构:
网站名称(软件名称) | 用户名(账户名称) | 密码 |
---|---|---|
123456789 | zz123456789 | |
csdn | 123456789 | zz123456789 |
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网页作为尝试。