python–简单的个人密码管理器
```python# 商业转载请联系作者获得授权,非商业转载请注明出处。
# For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source.
# 协议(License):署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
# 作者(Author):syy
import os
import base64
pwdName='E:/MESSAGE.txt'
msgName='E:/msg.txt' #这个txt文件仅供查询时生成使用,在最后会删除
def searchPwd(webname):#查找账号信息
f = open(pwdName, mode='r')
date = f.read().splitlines()
f.close()
for i in date:
b = i.replace("b'", '').replace("'", '')
a = bytes(b, encoding='utf-8')
msg = base64.b64decode(a).decode()# 解码后的内容
if not os.path.exists(msgName):
tem_file = open(msgName, mode='w')
tem_file.close()
file = open(msgName, mode='a')
file.write(msg + '\n')
file.close()
with open(msgName, mode='r')as file2:
lines = file2.readlines()
for line in lines:
if webname in line:
print(line)
break
elif not webname in line:
pass
else:
print('你查找的网站不存在')
def encryption(strmsg):
base64_strmsg=base64.b64encode(strmsg.encode())
return base64_strmsg
def makefile():
if not os.path.exists('E:/MESSAGE.txt'):
f=open('E:/MESSAGE.txt',mode="w")
f.close()
return f
def changePwd(old_pwd,change_name,new_pwd):
f = open(pwdName, mode='r')
date = f.read().splitlines()
f.close()
os.remove(pwdName)
f1=open(pwdName,mode='w')
f1.close()
for i in date:
b = i.replace("b'", '').replace("'", '')
a = bytes(b, encoding='utf-8')
msg = base64.b64decode(a).decode()# 解码后的内容(一行)
if change_name in msg:
if not '密码:'+old_pwd+'|' in msg:#防止判断时依据为账号
print('原密码错误')
f5 = open(pwdName, mode='a')
f5.write(i + '\n')
f5.close()
continue
else:
c = msg.replace('密码:'+old_pwd+'|','密码:'+new_pwd+'|')# 修改文本信息
d = base64.b64encode(c.encode())# 将修改完的msg进行base64转码
e = b.replace(i, str(d))
f3 = open(pwdName, mode='a')
f3.write(e + '\n')
f3.close()
print('修改成功')
break
#print('修改失败,可能是原密码错误')
elif not change_name in msg:
f4=open(pwdName, mode='a')
f4.write(i + '\n')
f4.close()
else:
print('修改失败')
def getMessage():
WebsiteName='|'+'网站名称:'+input("请输入网站名称:")
Weburl=' 网站链接:'+input("请输入网站链接:")
account=' 账号:'+input("请输入账号:")
pwd=' 密码:'+input("请输入密码:")+'|'
strmsg=WebsiteName+Weburl+account+pwd
return strmsg
def delePwd(dele_webname):
f = open(pwdName, mode='r')
date = f.read().splitlines()
f.close()
os.remove(pwdName)
f1 = open(pwdName, mode='w')
f1.close()
for i in date:
b = i.replace("b'", '').replace("'", '')
a = bytes(b, encoding='utf-8')
msg = base64.b64decode(a).decode()# 解码后的内容(一行)
if not dele_webname in msg:
f6 = open(pwdName, mode='a')
f6.write(i + '\n')
f6.close()
elif dele_webname in msg:
print('删除成功')
break
else:
print('该网站不存在')
def save():
f=open(pwdName,mode="a")
msg_str=str(encryption(getMessage()))
f.write(msg_str+'\n')
f.close()
if __name__ == '__main__':
print('------开始界面------')
print('1.密码查询')
print('2.新增密码')
print('3.修改密码')
print('4.删除密码')
print('------开始界面------')
num=input('请输入你要进行操作的序号')
if num == '1': #密码查询
webname = input('请输入你要查找的网站名称')
searchPwd(webname)
os.remove(msgName)
elif num=='2':
save()
elif num=='3':
change_name = input('请输入你要修改密码的网站名称')
old_pwd = input('请输入原始密码')
new_pwd = input('请输入新密码')
changePwd(old_pwd, change_name, new_pwd)
elif num=='4':
dele_webname = input('请输入你要删除的网站名称')
delePwd(dele_webname)
```
代码中还存在诸多不足,新手写的程序,还请谅解,thanks 怒火燃烧 发表于 2021-9-17 06:47
能增加一个随机密码生成功能吗?
import random
import string
import time
a = string.ascii_letters + string.digits + "~!@#$%^&*()_+{}|:\"<>?,./;'[]\`'"
n=int(input('请输入你要生成密码的位数:'))
m=int(input('请输入你要生成密码的个数:'))
def getKey():
keys = ''
for i in range(n):
c = random.randint(1, len(a)-1)
keys+=a
return keys
with open('随机密码.txt',mode='a') as f:
d=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
f.write('生成时间为'+d+'\n')
for i in range(m):
f.write(getKey()+'\n')
print("完成!请在'随机密码.txt'中查看")
直接加进去就行了 fls 发表于 2021-9-17 07:30
创意点赞~ 可以看看configparser,再就是文件按二进制open后decode,直接replace b引号有点6
好的,嘿嘿,刚学python没多久 密码确实是个费神的事,有个管理工具真是太棒了 64加密等于明文,加个ras更佳 kk159 发表于 2021-9-16 21:34
64加密等于明文,加个ras更佳
还不会,正在看:lol 先点赞,后学习。 能增加一个随机密码生成功能吗? 创意点赞~ 可以看看configparser,再就是文件按二进制open后decode,直接replace b引号有点6 不错啊,等下班回家慢慢看 新手的我 还是看不懂 学习学习
页:
[1]
2