吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2516|回复: 12
收起左侧

[Python 转载] python–简单的个人密码管理器

[复制链接]
Riors7 发表于 2021-9-16 19:46
# 商业转载请联系作者获得授权,非商业转载请注明出处。
# 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

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
懵懂的挖掘机 + 1 + 1 用心讨论,共获提升!
IUUUUUU + 1 + 1 热心回复!
锋霜 + 1 热心回复!
hshcompass + 1 + 1 谢谢@Thanks!
kof21411 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Riors7 发表于 2021-9-17 19:11
怒火燃烧 发表于 2021-9-17 06:47
能增加一个随机密码生成功能吗?

[Python] 纯文本查看 复制代码
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[c]
    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更佳

还不会,正在看
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
学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表