




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
陕西理工学院毕业设计题 目 基于DES加密算法的电子邮件的收发软件的开发 学生姓名 李亚男 学号 1118014077 所在学院 数学与计算机科学学院 专业班级 计本1103班 指导教师 李亚男 完成地点 陕西理工学院 2015年 6月5日 本科毕业设计任务书 院(系) 数学与计算机科学学院 专业班级 计算机科学与技术(计本1103) 学生姓名李亚男一、毕业设计题目 基于DES加密算法的电子邮件的收发软件的开发 二、毕业设计工作自 2014 年 12 月_ 09_日 起至 2015 年 6 月 20 日止三、毕业设计进行地点: 陕西理工学院 四、毕业设计内容要求:毕业设计应完成内容及相关要求:分组密码是现代密码学的重要组成部分,它在计算机通讯中对数据提供有效的保护。DES、AES以及IDEA算法都是分组密码加密技术的典型代表。本毕业设计要求开发一款电子邮件收发软件。在该软件中对电子邮件中的文本以及附件采用DES算法发进行加密发送,对收到的加密邮件运用DES的逆算法进行解密。毕业设计应收集资料及参考文献:1、 搜集关于密码学研究成果,尤其是DES加密算法的最新进展。2、 研究电子邮件协议,收集有关电子邮件客户端软件的开发案例。开题时间:2015年3月20日,并于此前提交开题报告课题完成时间:2015年5月30日 答辩时间:2015年6月10前 指 导 教 师 李军 系(教 研 室) 计算机工程教研室 系(教研室)主任签名 批准日期 接受设计任务开始执行日期 2014-12-09 学生签名 李亚男 基于DES加密算法的电子邮件的收发软件的开发李亚男(陕西理工学院数学与计算机科学学院计算机科学与技术专业1103班,陕西 汉中 723003)指导教师:李军摘要在发送邮件客户端利用DES加密算法对邮件进行加密,在接收邮件客户端对邮件进行解密,从而保证电子邮件在网络中的安全传输。系统开发采用B/S设计结构,实现了MVC三层架构,数据库采用MySQL。按照软件工程的思想依次进行系统的需求分析、系统分析、系统设计和系统调试,最终系统界面简洁美观、使用方便,较好实现了预期的各种功能。关键词DES算法;加密解密;电子邮件;收发软件The Development of Email Receiving and Sending Software Based on DES AlgorithmLi Yanan(Grade11,Class 03, School of Mathematics and Computer Science Dept., Shaan Xi University of Technology, Han Zhong 723003, Shaan Xi)Tutor: Li junAbstract:The subject is designed an email client that can encrypt message using DES algorithm while sending Email and decrypt the message using DES algorithm while receiving Email, so as to ensure email safe transmission in the network. The system structure is B/S mode, the development technology is based MVC three layer, the database use MySQL. According to the thought of software engineering, in turn, carried out the requirement analysis, system analysis, system design and debugging. The system interface is simple and beautiful, easy to use. It has better achieved the function expected.Key words:DESalgorithm;encryption and decryption;Email;Send and receive software;目 录引 言11需求分析21.1 调查研究21.2 性能需求21.3 功能需求21.4 数据流图21.5 数据字典32 系统设计52.1 设计目标52.2 开发及运行环境52.3 系统结构图52.4 数据库设计62.4.1 概念结构设计62.4.2 逻辑结构设计72.4.3 物理结构设计73系统实现93.1数据库的建立93.2JDBC数据库连接93.3 主要模块设计103.3.1 登录首页的设计103.3.2 发送邮件模块设计123.3.3 接收邮件模块设计153.3.4 加密解密模块设计183.3.5 联系人模块主要设计213.3.6 连接邮件服务器模块233.3.7 日志记录模块244.1模块测试254.2系统测试255 总结27致谢28参考文献29第 1 页 共 32 页引 言传统的电话通信有两个严重缺点:第一,电话通信的主叫和被叫双方必须同时在场;第二,一些不是十分紧迫的电话也常常不必要的打断人们正在进行的工作。而电子邮件的诞生很好的解决了以上两个缺点,电子邮件有以下几个优点:第一,用户只须登录电子邮件即可很方便的给别人发送信件;第二,电子邮件的传递迅速,用户只须几秒钟的时间即可把信件发送给其他用户;第三,电子邮件的费用低廉,比传统的电话和电报通信都要便宜的多。一个完整的电子邮件系统由三个主要构件组成,这就是邮件服务器、电子邮件使用的协议以及用户代理。邮件服务器是电子邮件系统的核心构件,因特网上所有的ISP(因特网服务提供商)都有邮件服务器。而电子邮件使用的协议是控制电子邮件在网络中正常发送和接收的标准和规则。目前,发送邮件主要使用的协议为简单邮件传输协议SMTP,接收邮件主要使用的协议为邮局协议POP3。用户代理UA(UserAgent)就是用户与电子邮件系统的接口,在大多数情况下就是用户PC机上运行的程序,一般由发送邮件客户端和接收邮件客户端构成。一个优秀的用户代理能够使用户通过一个友好的接口(目前主要是窗口界面)来发送和接收邮件,能够方便用户对电子邮件进行各种操作。随着网络技术的发展,电子邮件的安全问题变得越来越重要。在网络上,任何人只要访问这个网络的邮件服务器或者访问电子邮件在该网络中传输所经过的路径,就可以阅读这些邮件,而一些邮件包含了一些重要的信息,如果不幸被截获将带来重大的损失。因此需要对此采取相应的措施来保证电子邮件在网络中的传输安全。安全的电子邮件代理能保证用户发送的电子邮件在网络传输中的安全,使邮件中的重要信息不易被窃取。目前,大多数邮件系统都采取对邮件加密的方法来保证电子邮件传输的安全。比较流行的邮件加密算法有DES加密算法,RSA加密算法,PeP加密算法。本文就是开发了基于DES加密的电子邮件收发系统,解决邮件的安全问题。第 28 页 共29 页1需求分析1.1 调查研究现代网络通信技术飞速发展,电子邮件以其方便、快捷已经成为因特网上最受用户欢迎的一种应用,安全电子邮件代理能够为用户提供一个友好的界面,从而方便用户对电子邮件的管理操作,大大简化了用户在收发电子邮件时所做的工作,其中,提供的对电子邮件的加密功能保证了电子邮件在网络中的安全传输。而随着网络技术的飞速发展,电子邮件的安全性也受到了质疑。在网络上,发送一封电子邮件不仅信件向明信片一样是公开的,即使是用户的标志信息如邮件的地址等涉及到传输的信息都暴露无疑,对邮件进行干扰和破坏是一件很容易办到的事情。因此需要采取相应的措施增强电子邮件的安全性。基于DES算法的电子邮件收发软件必须要完成以下几个主要的功能: l 能登录常用的几种电子邮箱l 能接收邮件和发送邮件l 对发送的邮件内容进行DES加密,对接收的邮件进行DES解密l 对用户常用的联系人进行管理1.2 性能需求(1)磁盘容量要求:本网站属于B/S模式构架,因此存储容量较小,数据库系统也不是很大,系统文件估计占30M 的磁盘空间,数据库文件占用空间也不是很大。(2)安全性要求:本系统使用拦截器,页面未经用户登录不能进入系统,强制在地址栏进入后无法操作。(3)用户体验要求:要求与用户交互反应迅速,界面友好,菜单清楚,用户都能很快熟悉系统。1.3 功能需求该系统采取B/S模式,主要有三个功能。收件箱:(1)收取邮件:收取当前用户的未读邮件和已读邮件; (2)删除邮件:查看邮件后,用户可以删除此邮件;发件箱:(1)发送邮件;(2)记录发送日志;联系人:(1)增加联系人;(2)删除联系人;1.4 数据流图图1.1 顶层数据流图图1.2 邮件发送模块数据流图图1.3 邮件接收模块数据流图图1.4 邮件联系人模块数据流图1.5 数据字典数据字典就是为了数据流图的每个数据流、文件、加工,以及组成数据流或文件的数据项作出说明。对数据流图中的数据流、数据存储、加工、数据项的描述如下:表1.1 邮件信息数据字典数据流名称:邮件信息简 述:一个邮件来 源:用户录入去 向:邮件服务器数据流量 :1条/每次组 成 :发件人邮箱地址+主题+内容+发送时间+收件人邮箱地址+附件表1.2 联系人数据字典数据流名称:联系人信息简 述:联系人信息来 源:用户录入去 向:联系人信息表数据流量 :1条/每次组 成 :联系人类型+姓名+邮箱地址+生日+联系电话表1.3 发送邮件日志数据字典数据流名称:日志信息简 述:记录每次发邮件的信息来 源:系统记录去 向:邮件日志表数据流量 :1条/每次组 成 :发件人email+收件人email+主题+发件时间表1.4 已读邮件数据字典数据流名称:已读邮件信息简 述:已经阅读的邮件相关信息内容来 源:系统记录去 向:已读邮件表数据流量 :1条/每次组 成 :邮件id+邮箱地址 2 系统设计2.1 设计目标本系统作为加密的邮件收发软件,应该达到以下的要求:用户体验:用户界面友好,即时的人机交互,拥有易操作性;安全性:邮件信息在网络传输中的安全性,保证系统的登录安全;拓展性:系统以后的功能扩展方便,系统设计结构合理。2.2 开发及运行环境开发环境: 开发平台为JDK 1.6,MyEclipse 8.5; 数据库管理系统为MySQL 5.0; WEB服务器为Tomcat 6.0; 操作系统为Windows7;运行环境: 运行平台为JDK 1.6;WEB服务器为Tomcat 6.0;数据库管理系统为MySQL 5.0;操作系统为Windows XP/ Windows7; 分辨率为最佳效果1366*768。2.3 系统结构图根据需求分析阶段确定的系统要实现的功能,该系统具有以下主要功能模块,系统结构图如图2.1所示。图2.1 系统结构图2.4 数据库设计2.4.1 概念结构设计根据需求分析,得到系统的概念结构,本系统的概念结构如图2.2-2.12所示。图2.2 发送电子邮件实体E-R图图2.3 接收电子邮件实体E-R图 图2.4 联系人实体E-R图图2.5 已读邮件记录实体E-R图图2.6 已发邮件记录实体E-R图图2.7 系统总E-R图2.4.2 逻辑结构设计数据库逻辑结构设计是把概念模型转换为符合数据库管理系统的数据模型,把该系统的概念模型转换为关系模型可得如下的关系模式:邮件(发送)(ID,发送邮件地址,邮箱密码,接收邮件地址,发送服务器,接收服务器,主题,内容,发送时间,附件1,附件2)邮件(接收)(ID,发件邮箱,收件邮箱,主题, 发件时间,附件)发送邮件记录(ID,发件邮箱,收件邮箱,主题,发件时间)已读邮件记录(ID,邮件ID,收件邮箱)联系人类型(ID,名称)联系人类型(ID,所属用户,姓名,生日,电话,邮箱,联系人类型ID)2.4.3 物理结构设计根据上一步得到的关系模型,按照数据字典中相关数据项的描述,系统数据库的物理结构如表2.1-2.10所示。(1)tb_type(联系人类型表)表2.1 联系人类型表列 名数据类型长度允许空功能描述idInt4主键nameVarchar10类型名称(2)tb_addresslist(联系人表)表2.2 联系人表列 名数据类型长度允许空功能描述idInt4主键nameVarchar20联系人名称emailVarchar50电子邮箱birthdayVarchar10出生日期telVarchar20联系电话groupIdint4类型iduserEmailvarchar50所属用户(3)tb_sendlog(已发邮件记录表)表2.3 已发邮件记录表列 名数据类型长度允许空功能描述idint4主键addresservarchar50发件邮箱addresseevarchar50收件邮箱subjectvarchar50主题诉讼sendTimeDatetime发件时间(4)tb_isread(已读邮件记录表)表2.4 已读邮件记录表列 名数据类型长度允许空功能描述idint4主键messageIdvarchar100邮件idaddresseevarchar50收件人3系统实现3.1数据库的建立本系统数据库使用My SQL 5.0。数据库中各个表的实现如下:(1) 已发邮件记录表,表结果如图3.1所示。图3.1 已发邮件记录表(2) 已读邮件记录表,其建表结果如图3.2所示。图3.2已读邮件记录表(3) 联系人类型表。实现如图3.3所示。图3.3联系人类型表(4) 联系人表,实现如图3.4所示。图3.4 联系人表3.2JDBC数据库连接JDBC是Java语言访问数据库的一种规范,是一套API。 JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。接口包含在java.sql及javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaEE。这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或个人提供。下面是系统连接MySql数据库的代码:public Connection conn = null; / 声明Connection对象的实例public Statement stmt = null; / 声明Statement对象的实例public ResultSet rs = null; / 声明ResultSet对象的实例 private static String propFileName = /com/connDB.properties; / 指定资源文件保存的位置private static Properties prop = new Properties(); / 创建并实例化Properties对象的实例private static String dbClassName = com.mysql.jdbc.Driver;/ 定义保存数据库驱动的变量private static String dbUrl = jdbc:mysql:/localhost:3306/db_email;private static String dbUser = root;private static String dbPwd = 636465;public ConnDB() / 定义构造方法try / 捕捉异常/ 将Properties文件读取到InputStream对象中InputStream in = getClass().getResourceAsStream(propFileName);prop.load(in); / 通过输入流对象加载Properties文件dbClassName = prop.getProperty(DB_CLASS_NAME); / 获取数据库驱动dbUrl = prop.getProperty(DB_URL, dbUrl); / 获取URLdbUser = prop.getProperty(DB_USER, dbUser); / 获取登录用户dbPwd = prop.getProperty(DB_PWD, dbPwd); / 获取密码 catch (Exception e) e.printStackTrace(); / 输出异常信息/* * 功能:关闭数据库的连接 */public void close() try / 捕捉异常if (rs != null) / 当ResultSet对象的实例rs不为空时rs.close(); / 关闭ResultSet对象if (stmt != null) / 当Statement对象的实例stmt不为空时stmt.close(); / 关闭Statement对象if (conn != null) / 当Connection对象的实例conn不为空时conn.close(); / 关闭Connection对象 catch (Exception e) e.printStackTrace(System.err); / 输出异常信息3.3 主要模块设计3.3.1 登录首页的设计首页是用户最先使用的功能。它的设计质量关系到给用户的第一感觉,所以它的设计很重要。首页展示如图3.5所示。 如何进入首页:l Web.xml中配置: index.jsp l 首页登录代码如下:图3.5 首页设计图 POP3服务器: (如:) smtp服务器: (如:) 邮箱名: (如:) 密 码: l Action中主要代码:public void login(HttpServletRequest request,HttpServletResponse response)String host=request.getParameter(host);String host1=request.getParameter(host1);String username=request.getParameter(username);String password=request.getParameter(pwd); Store store=receiveEmailDAO.connectStore(host,username,password);/建立与邮件接收服务器的连接 if(store!=null)HttpSession session=request.getSession();session.setAttribute(host,host);/保存主机名到session中session.setAttribute(host1,host1);/保存主机名到session中session.setAttribute(username,username);/保存邮箱名到session中session.setAttribute(pwd,password);/保存密码到session中try request.getRequestDispatcher(main.jsp).forward(request,response);store.close();/关闭与邮件接收服务器的连接 catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); else/将页面重定向到错误提示页 request.setAttribute(error, 您输入的服务器、用户名或是密码错误,登录失败!); try request.getRequestDispatcher(error.jsp).forward(request,response); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); /showEmail(request,response,store,false);3.3.2 发送邮件模块设计l 页面展示如图3.6所示:图3.6 邮件发送页面展示l 页面主要代码: 发件人: input name=addresser type=text id=addresser title=发件人 value= readonly=yes size=56 收件人: 主 题: 附件 1: 附件 2: 内 容: l Action中主要代码:public int sendMail(SendMailForm s) int ret = 0;String host = s.getHost1();/POP3服务器String from = s.getAddresser();/发件人String to = s.getAddressee();/收件人String subject = s.getTitle();/主题String content = s.getContent();/邮件内容String password = s.getPwd();/发件人密码String path = s.getAdjunct();/附件1String path1=s.getAdjunct1();/附件2try String mailserver =smtp.+to.substring(to.indexOf()+1,to.length();/在Internet上发送邮件时的代码String mailserver =host;/在局域网内发送邮件时的代码Properties prop = new Properties();/实例化Properties类prop.put(mail.smtp.host, mailserver);/指定采用SMTP协议的邮件发送服务器的主机名prop.put(mail.smtp.auth, true);/指定SMTP服务器需要验证Session sess = Session.getDefaultInstance(prop);/根据已经配置的属性创建Session实例sess.setDebug(true);/设置调试标志MimeMessage message = new MimeMessage(sess);/实例化MimeMessage类message.setFrom(new InternetAddress(from);/ 给消息对象设置发件人/设置收件人String toArr=to.split(,);/将以逗号分隔的收件人字符串转换为数组InternetAddress to_mail=new InternetAddresstoArr.length;for(int i=0;itoArr.length;i+)to_maili=new InternetAddress(toArri);/将收件人地址转换为InternetAddress类的对象 message.setRecipients(Message.RecipientType.TO,to_mail);/设置收件人message.setSubject(subject);/设置主题java.util.Date sendTime=new java.util.Date();message.setSentDate(sendTime);/发件时间s.setSendTime(sendTime.toLocaleString();Multipart mul = new MimeMultipart(); / 新建一个MimeMultipart对象来存放多个BodyPart对象BodyPart mdp = new MimeBodyPart(); / 新建一个存放信件内容的BodyPart对象mdp.setContent(content, text/html;charset=gbk);mul.addBodyPart(mdp); / 将含有信件内容的BodyPart加入到MimeMulitipart对象中/*添加附件(用本机上的文件作为附件)*/if(!path.equals() & path!=null)mdp=addAttachement(path);if(null!=mdp)mul.addBodyPart(mdp);/添加第一个附件if(!path1.equals() & path1!=null)mdp=addAttachement(path1);if(null!=mdp)mul.addBodyPart(mdp);/添加第二个附件/*/message.setContent(mul); / 把mul作为消息对象的内容message.saveChanges();Transport transport = sess.getTransport(smtp);/ 以smtp方式登录邮箱,第1个参数是发送邮件用的邮件服务器SMTP地址,第2个参数为用户名,第3个参数为密码transport.connect(mailserver, from, password);/建立与邮件服务器的连接transport.sendMessage(message, message.getAllRecipients();/发送邮件transport.close();insert(s);/保存发送日志ret = 1; catch (Exception e) System.out.println(发送邮件产生的错误: + e.getMessage();ret = 0;return ret;3.3.3 接收邮件模块设计页面如图3.7所示:图3.7 查看收件页面设计图收取邮件中主要代码:/ 获取邮件内容public List showEmail(String host, String username,String password, String flag) List list = new ArrayList();try Store store = connectStore(host, username, password);/ 建立与邮件接收服务器的连接POP3Folder folder = (POP3Folder) store.getFolder(inbox);folder.open(Folder.READ_WRITE);/打开邮件夹/ 查询发件人为的邮件/ SearchTerm st=new FromStringTerm();/ Message message=folder.search(st);/ 查询未读邮件/ Flags flagss=new Flags(Flags.Flag.SEEN);/ FlagTerm st=new FlagTerm(flagss,flag);/ Message message=folder.search(st);/ *FetchProfile profile = new FetchProfile();/profile.add(U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购成本控制策略制定指南
- 一年级书信给老师的一封信150字7篇范文
- 早期阅读小鸟和大树课件
- 市场推广和联合营销合同书内容
- 人类请高抬贵手700字(12篇)
- 2025年日语J.TESTT级试卷
- 早孕健康知识培训课件
- 2025年三支一扶考试公共基础知识备考与模拟试卷
- 纪委监督检查知识培训课件
- 清华中学数学试卷
- 关联公司转租协议书
- 三级高频词汇必背
- 校园文化建设中心
- 《无人机介绍》课件
- 溃疡性结肠炎的中西医结合治疗策略
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业解读和应用培训指导材料之2:4组织环境(雷泽佳编制-2025A0)
- 《压力容器安装教程》课件
- 住培培训手册填写指导
- 小学生植物知识科普课件
- 美高课程体系介绍
- 2023年山东水发集团有限公司高校应届毕业生招聘笔试参考题库附带答案详解
评论
0/150
提交评论