我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于实训项目文件保护系统的总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于实训项目文件保护系统的总结

       此次实训项目的核心内容是文件的保护系统,核心是对文件的加解密。开发之初,本着边做边学习的想法,我们选了毫无基础的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

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于实训项目文件保护系统的总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于实训项目文件保护系统的总结

此次实训项目的核心内容是文件的保护系统,核心是对文件的加解密。开发之初,本着边做边学习的想法,我们选了毫无基础的python作为开发语言,对语法的不熟悉成为了我们最大的障碍。我们最终所实现的目标有如下几个:简单的用户管理、文件加解密、用户公
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录