# hash_system **Repository Path**: duandj/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**: 0 - **Forks**: 1 - **Created**: 2022-11-02 - **Last Updated**: 2022-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hash_system #### 系统简介 类似于 “花密”加密方式 花密:https://flowerpassword.com/ 界面简洁、本地加密存储、安全性极高。 **解决问题** 提高密码复杂性,同时只需记住一个记忆密码,和一个关联词。 如: 记忆密码:123456 关联词:qq 生成qq的登录密码:ZjgzNjcyODU5NmUzODc4MDgwYWI4NmFkMGFmNzZmYjRkNDBiZDg4MDk3ZWRjZTRiNThiZjFjNWE1MGZkMDhiZA 关联词:微信 生成微信的登录密码:OTNlNWRhMWVhMmY0NzkwMDFiNjQ0YzdiYzM1ZjI4YTZjMzVjODFhN2ViOWJkNjAwYjQxNmYwMDM1MTllYTQ3Nw **解决密码繁多,时间长忘记密码问题,且提高密码安全性。** #### 软件架构 采用CS架构 ## 使用说明 **打开文件夹找到带图标的.exe文件** ![image-20220821190156071](image/create_shortcut1.jpg) **右键发送 > 发送到 > 桌面快捷方式** ![image-20220819174150372](image/create_shortcut2.jpg) **同样的操作** ![image-20220821190705746](image/create_shortcut3.jpg) ![image-20220821191141518](image/create_shortcut4.jpg) ## 系统介绍 **双系统组成** ![image-20220819174150372](image/system_show.png) ### hash_pwd ![image-20220819174524501](image/hash_pwd.png) **生成密码** **输入一个记忆密码和关联,生成一个hash加密后的密码。** **使用加密码进行登录,(加密码无需记忆)。** ![image-20220819174429243](image/hash_pwd1.png) **点击生成** ![image-20220819174638461](image/hash_pwd2.png) **即可生成加密码,全选复制粘贴即可去登录** #### 建议 **建议使用时,更改hash加密所使用的SECRET_KEY(盐)。** **位置如下** ![image-20220819175951982](image/hash_pwd_b1.png) ![image-20220819203523250](image/hash_pwd_b2.png) --- ### pwd_system **如过密码多了,时间长了记忆密码和关联密码也会出现忘记的情况** **所以密码管理系统诞生了** **该管理系统,无需联网!所有操作为本地执行。** #### 多用户使用 **输入账号密码登陆时** **如果此用户在本地存在则校验密码,进行登录** **不存在,则自动注册该用户。** ![image-20220819180211529](image/pwd_system.png) **用户注册,就是在根目录 pwd 文件夹下创建该用户的密码本** **pwd**文件夹不存在则自动创建 ![image-20220819181218818](image/pwd_txt.png) #### 密码本介绍 **该密码本为.txt格式** **一个用户对应一个密码本** ![image-20220819181347276](image/pwd_txt2.png) **密码本文件名来源** ![pwd_login](image/pwd_login.png) **对用户账号进行hash加密生成字符串,该字符串作为文件名** **在登录时,首先对账号进行hash加密,然后拼接项目根路径。** **然后判断该文件是否存在(判断该用户密码本是否存在本地),如果存在则校验密码,不存在则进行注册** ![无标题](image/user_register.png) **生成用户密码本** **会将账号密码进行hash加密,生成的字符串为:用户签证** **并将用户签证写入文件中** **用户再次登录时,将根据用户签证校验账号密码** ![user_sign](image/user_sign.png) #### 用户登录流程总结 用户点击登录 会先对账号进行hash加密,加密后的字符串作为用户的**密码本**文件名,然后判断该用户密码本是否存在。 如果存在则,读取密码本第二条数据作为:**用户签证** 然后将账户密码进行hash加密,加密后的字符串与**用户签证**比较,如果相等则登录成功,否则账号或密码错误! 如果用户密码本不存在则自动注册,生成用户密码本。 ### 录入密码 ![image-20220819193343392](image/push_pwd.png) 此处录入的密码为**hash_pwd**生成加密时的密码 **输入记忆密码与对应的关联,会将之存入用户密码本** ![image-20220819193633626](image/pwd_system_show.png) **点击关联即可查看密码** ![image-20220819202329154](image/pwd_system_show2.png) **存入密码如下** ![image-20220819204103189](image/pwd_txt3.png) ![image-20220819193814909](image/pwd_txt4.png) **采用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_txt5.png) **然后登录新账号中,即可看到内容** ![无标题2](image/pwd_system_show3.png) #### 注意 **系统登录密码,非常重要!** **它是解开,所有录入密码的 密钥!** #### 多用户使用时可能会出现的问题 两个账号密码一致。 正巧A 账号 将 B 账号密码本中录入密码的密码字符串复制到 A 密码本中 那么 A 账号就能查看到 B 账号的密码。 **多人用户时:账号密码尽量较为复杂一点即可避免这个问题** 不过也不必担心,如果多用户使用时会有多个密码本,并且密码本文件名都是一串加密后的字符串 分不清哪个是自己的密码本,哪个是别人的密码本。 **自己单用户不存在这个问题** #### 推荐,单用户使用! **pwd_system密码管理系统,开发之处的定位,就是单独使用** 在没人的时候自己偷偷登录系统,录入一个新的密码,或查看一下某个自己遗忘了的密码 ### 自定义管理系统 **本系统允许修改源码** 使用 pyinstaller 即可对系统进行打包 ```python pyinstaller -D -w -i hash_pwd.ico hash_pwd.py ``` ```python pyinstaller -D -w -i pwd_system.ico pwd_system.py ``` 已打包好系统:https://gitee.com/wjh-space/hash_system_app gitee 源码:https://gitee.com/wjh-space/hash_system