关于实训项目文件保护系统的总结
2019-01-21 02:44:40来源:博客园 阅读 ()
此次实训项目的核心内容是文件的保护系统,核心是对文件的加解密。开发之初,本着边做边学习的想法,我们选了毫无基础的python作为开发语言,对语法的不熟悉成为了我们最大的障碍。我们最终所实现的目标有如下几个:简单的用户管理、文件加解密、用户公私密钥的分配。项目的运行过程如下:程序运行后显示登陆界面,用户输入的账号密码在经过哈希后与数据文件做对比,验证成功则进入主界面,并加载当前用户的数据文件,读取本用户的实时数据保险箱。登陆界面可以通过点击按钮跳转注册界面。主界面可以跳转密钥生成界面、实现文件加解密以及加密文件列表的显示。
用户和文件的存取方式一致基本。每一个用户的信息构成一条字典信息,所有用户的信息作为一个列表,存入数据文件中。用户信息包括{用户名,密码,用户公钥},文件信息包括{文件路径(文件名),加密后文件数据,RSA加密后的AES的key值,加密模式}
登陆界面密码以密文显示,实现代码:self.lineEdit_password.setEchoMode(QLineEdit.Password),登录按钮在按下后会调用验证函数,读取数据文件中的所有用户信息,验证用户名和密码。登陆界面具有记住密码功能,在配置文件config.ini中会记录当前用户名和密码以及记住密码是否被勾选,这些值在登陆成功后被写入config.ini。经过验证,此处不安全。即便不勾选记住密码,配置文件中依旧显示当前登陆用户名和密码。
登陆界面可以直接跳转注册界面,注册界面与登陆界面代码基本一致。注册以后,在user.dat文件夹中写入用户名和密码的哈希值,同时写入公钥字段,初始值为空。
密钥验证成功后,程序进入主界面中,在主界面显示时,会首先调用函数读取数据文件,若该用户尚无数据文件,则新建一个。在主界面,可以实现对文件的加密。文件加密是使用的对称加密方法AES的ECB模式,Key长度可选(16位或32位),Key由程序随机生成,Key值经过用RSA加密后存入数据文件,加密后的文件显示在下方文件列表中。解密时,用户需要提交私钥文件。私钥被提交后,程序先用私钥对一段固定信息进行签名,以当前用户的公钥进行验证,若匹配,则执行后续解密过程,若不匹配,则报错。在文件列表中,可以选中文件后点击解密按钮,也可以直接右键点击即可解密。在主界面显示过程中,程序会对数据文件中的文件数据进行读取,解密时,在变量中找到相关文件信息,读取文件Aes的key和加密模式,以用户私钥对key进行解密,然后再用Key对文件进行处理。
主界面可以跳转至密钥分配界面,当用户调转至密钥分配界面后,可以生成RSA 1024的密钥对,同时在程序会将其显示出。在用户点击保存私钥文件时,公钥被加载进用户数据文件,私钥被保存入以用户名命名的pem文件中,用户自行保存。
界面的生成用了PYQT5,在使用过程中,有个问题主要注意,由QTdesigner设计的界面在转为代码以后,默认继承自object,这导致在该文件下直接添加代码会导致代码未必可用(比如我们曾试图让其弹出QMessageBox,不可行),在网上查找解决方法时,有人提出新建一个类,继承界面代码即可,并未验证。我们的解决方法为自己写一个相同的类,直接在init函数中调用界面函数的setUI函数。
文件的读取和写入采用的 pickle和codecs 两个包,代码相当简洁易读。
由于初次写python,代码中大量复用其他人的代码,代码并不及规范,美观和可读性还需要提高。
代码地址 https://github.com/StevenQin97/FileVault.git
原文链接:https://www.cnblogs.com/sanbu/p/10292112.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:迭代器、生成器
- Django项目中使用qq第三方登录。 2019-08-13
- 把Python项目打包成exe文件 2019-08-13
- svn下载项目的时候出现 Path to certificate 2019-08-13
- django框架使用及创建项目 2019-07-24
- 1.关于Python,你可能不知道的 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash