Python使用tkinter写一个本地密码管理器

 更新时间:2023年05月07日 08:58:23   作者:nerkeler  
闲来无事,看到自己有很多网站的账户密码,有些网站可能打开一两次也就忘记了,下一次在输入账户密码就想不起来,这样很容易丢失账号。所以本文就来用Python和tkinter写一个本地密码管理器吧

详细代码见仓库

github地址:github.com/nerkeler/account

重要提示

程序默认密码:password

密钥位置:./resource/aesKey 建议另存一份以作备份

修改点

  • 本地密码导出中文乱码修复
  • 引入日志记录
  • 优化edge/chrome 浏览器导出适配管理

PS: 程序第一次打开关于页面显示不完整,如果遇到,请关闭后再打开

前言

闲来无事,看到自己有很多网站的账户密码,有些网站可能打开一两次也就忘记了,下一次在输入账户密码就想不起来,这样很容易丢失账号(当然也可以保存在浏览器自带的密码管理器中),虽然市面上也有很多优秀的账户密码管理软件,一来是这些程序大都是联网运行,在提供了多端存档的同时,也将密码和账户在网络上传输,虽然实际上很安全,但是并不是绝对的安全,二来,部分优秀的程序都是订阅付费机制,就想着自己干脆写个简单的本地的账户管理器,于是就有了这个小程序

先说一下优点吧,同市面上的程序比较,一个最突出的优点就是完全运行在本地,账户密码经过AES加密,在逻辑上可以说是非常安全的,因为你的密码不会暴漏在网络上,本地也进行了加密处理。

当然缺点也很明显,一是功能不是十分完善,二是该程序使用tkinter 模块编写,在布局和界面展示上都显得十分简陋,好在基本的功能没有问题

使用说明

1.下载解压程序文件

2.运行account.exe文件

3.点击新建账号按钮添加新的账号密码信息

4.双击表格中的数据进行编辑或删除

5.点击导出按钮验证密钥密码后将数据导出为CSV格式文件

6.点击导入按钮选择CSV文件进行导入数据

7.可按需求导入并管理Chrome/Edge密码本浏览器密码

登录

第一次登陆密钥弹出框被关闭时,就进入了程序的登录界面,默认账户名admin 不可修改,默认密码为 :password,建议第一次登陆时修改密码

PS: 多用户功能尚未开发,因此账户名锁定不可编辑

修改密码

在登陆界面 点击 改密 进入修改密码界面,新密码要求字符数大于8位,点击确定 按钮即可进行密码修改,修改成功后会提示修改成功,重新登陆,如下图所示

chrome/edge浏览器密码导入管理

依次点击:

1.设置

2.自动填充

3.密码管理器

找到如图红框内容,验证设备密码后导出chrome密码本csv文件到本地

回到程序后点击导入

对应导入源后选择导入文件即可导入数据,单线程导入较慢,请耐心等待,快捷键暂未适配

主页面

主界面共分为两个区域:

  • 一个是上方的功能区,提供了查询、查看、新增、删除(软删除)功能,
  • 一个是下方的账户展示区域,默认打开时按照列表展示所有账户信息

相关操作

  • 下拉框提供了 账户编号(对应下方序号列)、网站名称(对应下方网站列)、网站网址(对应下方网址列)查询条件转换
  • 文本框接受 下拉框的对应字段,为空时默认查询所有
  • 点击某一项账户时,点击查看/双击当前项 可进入当前账户查看界面,如图所示,当前页面也可以更新账户信息
  • 新增按钮会弹出新增界面,按照规定指示填写字段即可新增一条记录
  • 删除按钮 在点击某一项账户时,点击删除,即可删除当前记录(软删除,更改了当前的状态)

随机密码

可以按照自己的需求生成相应的密码规则,ABC/123/abc/#$&

注:在密码长度>字符类型数的时候会补数字 如 密码长度选30 规则选abc 会在26个字符后再补几个数字构成随机字符

关于

聊胜于无,简单说一下,详细见程序页面

补充说明

忘记登陆账户密码时,可将account.db 文件使用数据库可视化工具打开,取出当前账户的相关信息和密码,根据密钥和加密逻辑解密当前账户的密码明文

加密逻辑如下:

import hashlib
from Crypto.Cipher import AES
​
​
def encode_password(password):
    key = yourkey           # key 表示你的密钥 
    
    slot = "nerkeler"
    encode = key + slot
    myKey = hashlib.md5(encode.encode("utf-8")).hexdigest().__str__()[:24]
    return aes_encode(myKey, password)
    
    
def aes_decode(key, ciphertext):
    # 将密钥填充到16的倍数
    key = key + (16 - len(key) % 16) * '\0'
    # 创建AES密码器对象
    cipher = AES.new(key.encode(), AES.MODE_ECB)
    # 解码Base64编码的密文
    ciphertext = base64.b64decode(ciphertext)
    # 解密
    plaintext = cipher.decrypt(ciphertext)
    # 去除填充字符
    plaintext = plaintext.rstrip(b'\0')
    return plaintext.decode()

到此这篇关于Python使用tkinter写一个本地密码管理器的文章就介绍到这了,更多相关Python tkinter本地密码管理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Pandas与openpyxl库的超强结合

    详解Pandas与openpyxl库的超强结合

    Pandas绝对是Python中处理Excel最快、最好用的库,但是使用 openpyxl 的一些优势是能够轻松地使用样式、条件格式等自定义电子表格,感兴趣的可以了解一下
    2021-09-09
  • 搞清楚 Python traceback的具体使用方法

    搞清楚 Python traceback的具体使用方法

    这篇文章主要介绍了搞清楚 Python traceback的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • python用Tkinter做自己的中文代码编辑器

    python用Tkinter做自己的中文代码编辑器

    这篇文章主要介绍了python用Tkinter做自己的中文代码编辑器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python os库使用示例教程

    python os库使用示例教程

    这篇文章主要介绍了python os库使用示例教程,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Python如何telnet到网络设备

    Python如何telnet到网络设备

    这篇文章主要介绍了Python如何telnet到网络设备,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python get()函数用法案例详解

    Python get()函数用法案例详解

    在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错误,本文给大家介绍Python get()函数用法案例,感兴趣的朋友一起看看吧
    2025-06-06
  • python opencv通过4坐标剪裁图片

    python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 利用OpenCV实现YOLO对象检测方法详解

    利用OpenCV实现YOLO对象检测方法详解

    这篇文章主要介绍了如何使用YOLOV3对象检测器、OpenCV和Python实现对图像和视频流的检测。文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-01-01
  • Python中hash()函数之哈希值的奥秘详解

    Python中hash()函数之哈希值的奥秘详解

    hash()是Python 中的一个内置函数,用于计算对象的哈希值,哈希值是一个整数,用于唯一标识对象,下面这篇文章主要给大家介绍了关于Python中hash()函数之哈希值奥秘的相关资料,需要的朋友可以参考下
    2024-06-06
  • Python Requests库基本用法示例

    Python Requests库基本用法示例

    这篇文章主要介绍了Python Requests库基本用法,结合实例形式总结分析了Python Requests库安装、请求发送与响应、文件下载、重定向等相关操作技巧及注意事项,需要的朋友可以参考下
    2018-08-08

最新评论