# hash_system **Repository Path**: NeverStopDreamingWang/hash_system ## Basic Information - **Project Name**: hash_system - **Description**: 密码管理系统源码,CS架构,本地加密存储 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-08-19 - **Last Updated**: 2024-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: PyQt5, CS架构 ## README # hash_system #### 系统简介 类似于 “花密”加密方式 花密:https://flowerpassword.com/ 界面简洁、本地加密存储、安全性极高。 **解决问题** 提高密码复杂性,同时只需记住一个记忆密码,和一个关联词。 如: 记忆密码:123456 关联词:qq 生成qq的登录密码:ZjgzNjcyODU5NmUzODc4MDgwYWI4NmFkMGFmNzZmYjRkNDBiZDg4MDk3ZWRjZTRiNThiZjFjNWE1MGZkMDhiZA 关联词:微信 生成微信的登录密码:OTNlNWRhMWVhMmY0NzkwMDFiNjQ0YzdiYzM1ZjI4YTZjMzVjODFhN2ViOWJkNjAwYjQxNmYwMDM1MTllYTQ3Nw **解决密码繁多,时间长忘记密码问题,且提高密码安全性。** #### 软件架构 采用CS架构 ## 使用说明 使用 pyinstaller 即可对系统进行打包 ```python pyinstaller - D - w - i hash_pwd.ico hash_pwd.py ``` ```python pyinstaller - D - w - i pwd_system.ico pwd_system.py ``` gitee 源码:https://gitee.com/wjh-space/hash_system ## 系统介绍 ![image-20220819174150372](image/system_show.png) ### hash_pwd ![image-20220819174524501](image/hash_pwd.png) **生成密码** 输入一个记忆密码和关联,生成一个hash加密后的密码。 点击生成,即可生成加密码,全选复制粘贴即可去登录 使用加密码进行登录,(加密码无需记忆)。 #### 建议 **建议使用时,更改hash加密所使用的SECRET_KEY(盐)。** --- ### pwd_system **如过密码多了,时间长了记忆密码和关联密码也会出现忘记的情况** **所以密码管理系统诞生了** **该管理系统,无需联网!所有操作为本地执行。** #### 多用户使用 **输入账号密码登陆时** **如果此用户在本地存在则校验密码,进行登录** **不存在,则自动注册该用户。** ![image-20220819180211529](image/pwd_system.png) **用户注册,就是在根目录 pwd 文件夹下创建该用户的密码本** **pwd**文件夹不存在则自动创建 ![image-20220819181218818](image/pwd_txt.png) #### 密码本介绍 **该密码本为.txt格式** **一个用户对应一个密码本** ![image-20220819181347276](image/pwd_txt2.png) #### 用户登录流程总结 用户点击登录 会先对账号进行hash加密,加密后的字符串作为用户的**密码本**文件名,然后判断该用户密码本是否存在。 如果存在则,读取密码本第二条数据作为:**用户签证** 然后将账户密码进行hash加密,加密后的字符串与**用户签证**比较,如果相等则登录成功,否则账号或密码错误! 如果用户密码本不存在则自动注册,生成用户密码本。 ### 录入密码 ![image-20220819193343392](image/push_pwd.png) 此处录入的密码为**hash_pwd**生成加密时的密码 **输入记忆密码与对应的关联,会将之存入用户密码本** **采用AES对称加密算法** **使用系统登录密码 作为AES加密时SECRET_KEY(盐)** **将记忆密码 与 关联进行加密,然后存储在对应用户的密码本中。** 查看密码时 根据 **系统登录密码**再进行解密,即可得到录入密码。 #### AES加密 **AES 采用 CBC 模式,其 SECRET_KEY(盐) 为系统登录密码。** **登录密码是查看所有密码的超级密码(密钥),慎重保存!** **偏移量**为录入密码的其存储所在的行数,除去前两行(密码本声明、用户签证) 例:如上图,其存储位置为1,那么偏移量也为 1 下一个录入密码的偏移量为 2,以此类推。 **增加密码的安全性,如果更改了密码本中的内容,那么就会解不出来了** **一行存储一个密码** ### 密码本迁移 **迁移用户密码本** 如果想要迁移用户密码本,则直接将 根目录下 pwd 文件夹整个复制到另一个系统中。 前提:迁移后的系统中hash加密的 SECRET_KEY 与原系统中的一致。 **如果不一致** 先创建一个账号(登录一个不存在的账户) 其 **系统登录密码 必须与 原系统登录密码一致**,(账号可以不一致),否则解密不出来。 然后打开两个密码本(新用户密码本,和原用户密码本) ![migrate_pwd](image/migrate_pwd.png) **将图上选中内容,复制到新密码本中,注意格式!** ![image-20220819204930818](image/pwd_txt_content.png) **然后登录新账号中,即可看到内容**