Riors7 发表于 2021-9-16 19:46

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

Riors7 发表于 2021-9-17 19:11

怒火燃烧 发表于 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'中查看")

直接加进去就行了

Riors7 发表于 2021-9-17 19:12

fls 发表于 2021-9-17 07:30
创意点赞~ 可以看看configparser,再就是文件按二进制open后decode,直接replace b引号有点6

好的,嘿嘿,刚学python没多久

xiahhhr 发表于 2021-9-16 21:32

密码确实是个费神的事,有个管理工具真是太棒了

kk159 发表于 2021-9-16 21:34

64加密等于明文,加个ras更佳

Riors7 发表于 2021-9-16 22:19

kk159 发表于 2021-9-16 21:34
64加密等于明文,加个ras更佳

还不会,正在看:lol

hshcompass 发表于 2021-9-16 23:29

先点赞,后学习。

怒火燃烧 发表于 2021-9-17 06:47

能增加一个随机密码生成功能吗?

fls 发表于 2021-9-17 07:30

创意点赞~ 可以看看configparser,再就是文件按二进制open后decode,直接replace b引号有点6

锋霜 发表于 2021-9-17 08:43

不错啊,等下班回家慢慢看

ch1029 发表于 2021-9-17 10:04

新手的我 还是看不懂

angle951 发表于 2021-9-17 10:42

学习学习
页: [1] 2
查看完整版本: python–简单的个人密码管理器