jsp数字签名系统springmvc+mysql论文_第1页
jsp数字签名系统springmvc+mysql论文_第2页
jsp数字签名系统springmvc+mysql论文_第3页
jsp数字签名系统springmvc+mysql论文_第4页
jsp数字签名系统springmvc+mysql论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGEI摘要随着网络时代的发展和各类信息的增长,越来越多的的信息出现在每个人的生活中,社交网络也成为当今社会中的一个主流,如Facebook、Twitter、微博等已经已成为主流的信息分享平台。数字签名是起到身份认证、核准数据完整性的一种信息安全技术。它通过认证技术来辨认真伪。根据网站信息管理系统的开发为背景,论述了整个系统的开发过程,系统的结构及系统开发的基本原理和方法。全系统共分前言、编程环境基础知识、需求分析、系统设计、系统实施、系统运行及维护、开发总结等几章。详细论述了需求分析、系统设计的技术及应用、系统的功能等内容网站可以通过保留用户偏好数据从而提高网站的点击率和用户的依赖性以及期望。在系统设计中主要研究了个性化页面的背景及MySQL+JSP+Apache。系统的一般原理。阐述整个个性化页面生成系统的系统结构及工作原理,分析了系统实现中的特殊性、难点和重点。分析并解决实现中的若干技术问题,建立完整的数字签名系统,进行测试并分析结果。关键词:数字签名系统;JSP;B/S结构;核心

AbstractWiththedevelopmentoftheInternetageandthegrowthofallkindsofinformation,moreandmoreinformationappearsineveryone'slife,socialnetworkinghasbecomeamainstreamintoday'ssociety,suchasFacebook,Twitter,microblogginghasbecomeMainstreaminformationsharingplatform.Adigitalsignatureisaninformationsecuritytechnologythatperformsidentityauthenticationandapprovesdataintegrity.Itusesauthenticationtechnologytoidentifyauthenticity.Accordingtothebackgroundofthedevelopmentofwebsiteinformationmanagementsystem,thebasicprinciplesandmethodsofthewholesystemdevelopmentprocess,systemstructureandsystemdevelopmentarediscussed.Thewholesystemisdividedintopreface,basicknowledgeofprogrammingenvironment,requirementanalysis,systemdesign,systemimplementation,systemoperationandmaintenance,developmentandotherchapters.Thispaperdiscussestherequirementsanalysis,systemdesigntechnologyandapplication,systemfunctionandothercontentsitescanretaintheuserpreferencesdatatoimprovethesite'sclick-throughrateandtheuser'sdependenciesandexpectations.

InthesystemdesignmainlystudiesthebackgroundofpersonalizedpagesandMySQL+JSP+Apache.Thegeneralprincipleofthesystem.Thesystemstructureandworkingprincipleofthewholepersonalizedpagegenerationsystemareexpounded,andtheparticularity,difficultyandkeypointinthesystemrealizationareanalyzed.Analyzeandsolvesometechnicalproblemsintheimplementation,establishacompletedigitalsignaturesystem,testandanalyzetheresults.

Keywords:digitalsignaturesystem;JSP;B/Sstructure;core目录摘要 IAbstract II第一章绪论 11.1研究背景 11.2研究意义 11.3研究思路 2第二章开发环境和关键技术 32.1开发环境 32.2关键技术 32.2.1JSP 32.2.2MySQL 42.2.3JDK配置 42.2.4B/s简介 5第三章需求分析 63.1可行性分析 63.1.1技术可行性 63.1.2经济可行性 63.1.3管理可行性 73.2系统具备的功能 7第四章数据库设计 94.1数据字典 94.3E-R图 10第五章详细设计 115.1系统功能图 115.2详细功能图 12第六章系统出错处理 186.1出错信息 186.2补救措施 18结论 20参考文献 21致谢 22数字签名系统PAGE17第一章绪论1.1研究背景随着互联网络的快速发展,计算机技术迅速渗入到各行各业,为很多很多的用户提供了更加周到更加便捷的服务。当今世界,越来越多的行业都会采用专业的系统去给大家提供方便,其范围包括了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各种各样的领域。同时,越来越多的的信息出现在每个人的生活中,社交网络也成为当今社会中的一个主流,如Facebook、Twitter、微博等已经已成为主流的信息分享平台。随着电子信息技术的迅速发展,人类已步入信息社会。但是由于整个社会形成了一个巨大的计算机网络,任何一个计算机网络出现的安全问题,都会影响整个国家的网络安全,所以信息安全、计算机网络安全问题已引起了人类的高度重视。无论是在局域网还是在广域网中,都存在着自然和人为等诸多因素的脆弱性和潜在威胁。故此,网络的安全措施应是能全方位地针对各种不同的威胁和脆弱性,这样才能确保网络信息的保密性、完整性和可用性。针对网络安全的威胁主要有三方面:(1)人为的无意失误;(2)人为的恶意攻击;(3)网络软件的漏洞和“后门”。现代密码学已成为信息安全技术的核心,密码学是以研究通信安全保密的学科,即研究对传输信息采用何种秘密的变换以防止第三者对信息的窃取。密码学包括两个分支:密码编码学和密码分析学。密码编码学主要研究对信息进行交换,以保护信息在信道的传递过程中不被他人窃取、解密和利用的方法,而密码分析学则与密码编码学相反,它主要研究如何分析和破译密码。两者之间既相互对立又相互促进。密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体,如PGP。1.2研究意义随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗成为非常重要的问题。在计算机通信系统中,维护电子文档的安全也成为至关重要和非常敏感的问题。为保护信息的安全,数字签名应运而生,它是现代密码学主要研究的内容之一。目前关于数字签名的研究主要集中点是基于公钥密码体制的数字签名。在公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,因此它较好地解决了传统密码体制在网络通信中出现的问题。手写签名的每一项业务都是数字签名的潜在用场。数字签名可以提供数据完整性、真实性和不可否认性。因而当需要对某一实体进行认证、传输具有有效性的密钥以及进行密钥分配时,便可以借助数字签名来完成任务。数字签名技术在身份识别和认证、数据完整性、抵赖等方面具有其它技术无法替代的作用,它在军事、电子商务和电子政务等领域有着极广泛的应用。而在公钥体制中,RSA是一个较为完善的公钥密码算法,不仅能够同时用于加密和数字签名,而且易于理解和操作,是被广泛研究的公钥密码算法。因此,数字签名具有较强的研究性和实际应用意义。1.3研究思路在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用.因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。数字签名的特点是它代表了消息的特征,消息如果发生改变,数字签名的值也将发生改变,不同的消息将得到不同的数字签名。安全的数字签名使接收方可以得到保证:消息确实来自发送方。因为签名的私钥只有发送方自己保存,他人无法做一样的数字签名,如果第三方冒充发送方发出一个消息,而接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,加密出来的数字签名和经过计算的数字签名必然是不相同的,这就提供了一个安全的确认发送方身份的方法,即数字签名的真实性得到了保证。数字签名通过认证技术来辨认真伪。认证技术主要包括数字签名认证、身份认证以及公开密钥证明等。数字签名认证机制提供了一种对数字签名进行鉴别的方法;身份认证机制提供了辨别和确认通信双方真实身份的方法;公开密钥证明机制则对密钥进行验证。网络时代中,人们验证数字签名来确定你正在和谁打交道,验证你的文件是否已被黑客篡改。数据的安全性和真实性已成为网络安全中至关重要的一部分。数字签名类似手书签名,它具有以下的性质:1)能够验证签名产生者的身份,以及产生签名的日期和时间;2)能用于证实被签消息内容;3)数字签名可由第三方验证,从而能够解决通信双方的争议。为了实现数字签名的以上性质,它就应满足下列要求:1)签名是可信的:任何人都可以验证签名的有效性;2)签名是不可伪造的:除了合法的签名者外,任何人伪造其签名是困难的;3)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;4)签名的消息是不可改变的:经签名的消息不能篡改,一旦签名的消息被篡改,任何人都可以发现消息与签名之间的不一致性;5)签名是不可抵赖的:签名者事后不能否认自己的签名。可以由第三方或仲裁方来确认双方的信息,以做出仲裁。为了满足数字签名的这些要求,例如,通信双方在发送消息时,既要防止接收方或其他第三方伪造,又要防止发送方因对自己的不利而否认,也就是说,为了保证数字签名的真实性。数字签名的原理是:(发送方和接收方根据要求各自产生自己的一对公钥和私钥)1)被发送文件采用某种算法对原始消息进行运算,得到一个固定长度的数字串,称为消息摘要(MD),不同的消息得到的消息摘要各异,但是对相同的消息它的消息摘要却是唯一的;2)发送方生成消息的消息摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名;3)这个数字签名将作为消息的附件和消息一同用接收方的公钥进行加密,将加密后的密文一起发送给接收方;4)接收方首先把接收到的密文用自己的私钥解密,得到原始消息和数字签名,再用发送方的公钥解密数字签名,随后用同样的算法计算出消息摘要;5)如果计算出来的消息摘要和发送方发送给他的消息摘要(通过解密数字签名得到的)是相同的,这样接收方就能确认数字签名确实是发送方的,否则就认为收到的消息是伪造的或是中途被篡改的。数字签名的原理图如2-1所示数字签名原理本系统采用JSP作为开发语言和mysql数据库。本系统的重点在于,选课的展示,怎么做到能够全面而且真实的信息是一个问题。本次课题的难点在于对mysql数据库的应用以及各个表的创建与管理,通过研究与学习,解决在课题中遇到的困难。

第二章开发环境和关键技术2.1开发环境硬件平台:CPU:IntelXeonE5-26092.50GHz内存:32G硬盘:2T软件平台: 操作系统:可以用Windows7、8、10等操作系统数据库:采用MySQL,用sqlyog数据库可视化工具开发工具包:JDK1.8JSP服务器:Apache8.5服务器浏览器:IE5.0,推荐使用IE6.0,火狐等显示器分辨率:最佳效果为1024×768像素2.2关键技术2.2.1JSPJSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,不但在Linux下运行,也能在Windows系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。2.2.2MySQLMySQL是非结构化语言,用户可以在高层数据数据结构上工作,并且其语言简单,学习起来比较容易,其结构也简单,功能强大,存储信息量大,mysql是一种主要应用于数据的查询和编程,现在普遍存在的关系数据库有很多,而mysql数据库在其中得到了普遍的应用。使用mysql数据库在编程过程中带来了极大的方便,可以对数据进行广泛地查询,mysql数据库的应用并不需要用户了解其存储的方式,更不用掌握数据存放的方法,所以,mysql数据库是完全不同于其他数据的结构,并且不同数据库系统也可以使用相同的数据库进行输入和管理的接口,它的操纵对象是记录相应集合,mysql数据库的灵活性较强,功能也较强大,大多数情况下,在其他程序中实现某功能需要编写一大堆代码,而在SQL数据库中只需要一小段代码就可以实现功能,所以,mysql数据库的语言较简洁,数据库文件的扩展名是mysql。数据库,就是数据存储的储藏室,只不过数据是存储在计算机上的,而不是现实中的储藏室,数据的存放是按固定格式,而不是无序的,则定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要包括数据表的建立,数据存储、修改和增加数据,为了使数据库系统能够正常运行,相关人员进行的管理工作。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了mysql进行对数据的管理。2.2.3JDK配置JDK是JavaDevelopKit的缩写,它是早期Java的开发包名称,一直延用至今。1998年JDK发表1.2版本的时候,Sun公司使用了新名称Java2Platform来称呼Java,译成中文就是“Java平台”,修改后的JDK称为J2SDK即Java2(Platform)SoftwareDevelopingKill。并分为标准版、教师版、微型版,它们有不同的用途。从SUN公司的Internet站点下载最新版本的JDK,可以从Sun公司的主页上免费下载,它的下载网址为:。双击下载的JDK安装程序,进入安装界面,单击“下一步”按钮,更改安装目录,这里更改为d:\java;连续单击“Next”(下一步)按钮,直至安装结束。下面是对JDK的环境配置说明(因为现在用Windowsxp版本的用户居多,所以以下的环境变量设置都是针对于Windowsxp环境)。在WIN7/8/10,桌面上选择“我的电脑”(右键)→属性→高级→环境变量,单击系统变量中的“新建”按钮,分别添加如下的系统变量。变量名:JAVA_HOME;变量值:D:\JAVA。变量名:CLASS_PATH;变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(加.表示当前路径,所以这里的.;是不能少的)。变量名:PATH;变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。配置完成之后,WIN+R打开命令窗口,输入CMD,在DOS界面下输入JAVA–version,查看环境变量配置是否正确。2.2.4B/s简介B/S结构就是只安装和维护一个服务器,客户端是利用浏览器来运行软件。随着Internet技术的兴起和发展。C/S结构已经无法满足人们的要求。于是人们开始变换的C/S,这产生了B/S结构。B/S比C/S的维护工作量大大减少了。[9]C/S结构的每个客户端都必须安装和配置软件。B/S能够降低总体拥有成本。随着计算机技术的发展,目前大多数科技公司都不约而同的对数据提出了实时性、一致性和安全性等这些要求。传统类型C/S结构根本达不到这些要求,迫切的需要做出改变。但是B/S结构则不同,它可以清楚正确的看到系统正在处理的业务,这样有利于管理人员快速的做出决策,有效地避免了企业经济上的亏损。B/S结构的软件,因为在数据集中在数据库服务器,客户端不持有任何业务数据和数据库连接信息,也无需进行数据同步,所以安全性可以大大提高。B/S结构中的数据采取了集中式管理模式。当客户端的业务产生数据时,这些数据都直接被存入中央数据库。这样的做法避免了数据一致性的问题。这些优点很好更好的迎合了人们的需要。以当下技术水平来说,利用B/S结构来开发网络应用,并通过Internet/Intranet模式下数据库应用,是容易把握的而且成本也是比较低的。这样的开发模式实现了不同的人,从不同的地点,不同的接入方式访问和操作共同的数据库;它可以有效地保护和管理数据访问平台,服务器数据库也是非常安全的。尤其是在这样一种跨平台语言JAVA之后出现,B/S体系结构管理软件是更方便、更快捷、更高效。2.2.5数字签名算法的实现原理1、RSA算法数字签名算法分为以下两个步骤:1)签名算法(包括两步:消息摘要计算,RSA加密)(1)消息摘要MD的计算:消息在签名前首先通过MD5计算,生成128位的消息摘要;MD5函数是一种单向散列函数,它将任意长度的消息压缩成128位的消息摘要。应用MD5的单向性(即给定散列值,计算消息很难)和抗碰撞性(即给定消息M,要找到另一消息M’并满足两者的散列值很难),可以实现信息的完整性检验。另外该函数的设计不基于任何假设和密码体制而直接构造,执行的速度快,是一种被广泛认可的单向散列算法。(2)对MD作加密算法:采用签名者的私钥加密消息摘要,得到加密后的字符串即数字签名;2)验证签名算法(解密、对消息摘要计算和比较)验证签名算法包括两步:解密得签名者的消息摘要,验证者对原消息计算摘要,比较两个消息摘要。验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名。(1)解密:签名实际是加密的消息摘要,用以上所述的解密方法采用签名者的公钥对这个加密的消息摘要解密,解密的结果应为128位的消息摘要。(2)消息摘要计算和比较:验证者对消息用MD5算法重新计算,得到验证者自己的消息摘要。验证者比较解密得到的消息摘要和自己的消息摘要,如果两者相同,则验证成功,可以确认消息的完整性及签名确实为签名者的;否则,验证失败,确认签名被冒充或是被篡改。2、MD5数字签名算法MD5消息摘要算法(RFC1321)是由Rivest(公开密钥密码RSA算法的设计者之一)所设计的单向散列函数,MD5不基于任何假设和密码体制,它采用了直接构造的办法,速度很快,非常实用。MD5算法的典型应用是对一段信息(message)产生信息摘要(MD),以防止被篡改。比如,在unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:md5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461这就是tanajiya.tar.gz文件的数字签名。md5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的md5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算md5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用md5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。md5还广泛用于加密和解密技术上。比如在unix系统中用户的密码就是以md5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成md5值,然后再去和保存在文件系统中的md5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。MD5算法以任意长度的消息作为输入,产生一个128比特消息散列值(或称消息摘要)作为输出。具体的算法步骤如下:步骤1:附加填充比特,对消息进行填充,使消息的长度(比特数)与448模512同余,即恰好为一个比512比特的倍数仅小64位的数。步骤2:附加消息长度值,将用64比特表示的初始消息(填充前)的长度(比特数)附加在步骤1的结果后。步骤3:初始化MD缓存,MD5算法使用了一个4个字(128比特,MD4中每个字32比特)的缓存来计算消息摘要,它们主要用来存放MD5的中间及最终结果。缓存可以看成是4个32比特的寄存器(A,B,C,D)。步骤4:以512比特(16个字)分组处理消息,这一步是MD5算法的主循环,以512比特作为分组,在后面有详细的介绍。第三章需求分析3.1可行性分析3.1.1技术可行性因为计算机硬件的发展已经越来越快,现在PC机的性能已经可以胜任普通网站的web服务器。购买一台高性能PC机作为企业的网站对于这个营销商来说并不是问题。JSP是Java在Internet/InternetWeb上的重要应用技术,可以和各种Java技术完好的结合在一起,从而实现非常复杂的应用,因此得到了广泛的支持和承认,成为一种非常流行的网站开发技术。利用JSP技术可以建立先进、安全和跨平台的动态网站。鉴于JSP技术的成熟与广泛的使用,加以指导老师的帮助可以得到很多的技术支持。由于在学习数据库时一直以MySQL作为实例,所以拟采用MySQL作为后台数据库。本设计基于JSP程序开发技术,采用B/S结构,系统的开发选用了当前比较流行的网络编程技术——JSP作为主要实现手段(从系统的安全性和代码的可重用性方面考虑,配合使用了JAVAServlet、JSP、HTML等),同时采用MySQL数据库作为电子商务网站的后台数据存储。JSP是一个开放源代码的、基于Java的可扩展开发平台,能够开发JAVA,所以可以用来设计系统程序,而MySQL数据库功能强大,内容广泛,且能够与JSP通过程序源代码连接起来,故可以作为系统的主要数据库。所以,从技术角度考虑,开发产品网上交易系统是完全可行的。3.1.2经济可行性网站成本依网站从建设至运行可将其划分为网站建设成本与运行维护成本两大类。网站建设成本又分为设备费、通信费、信息费、软件开发成本和其他成本等。网站建设的前期投入主要在网站建设成本中,运行维护成本则指网站建成投人使用后,为保障其正常运行需向网络管理机构支付的运行费用以及网站的技术维护和管理等费用。网站建设的前期投入一般企业还是可以接受,再考虑到网站开发成功之后带来的网站收入,开发一个网上交易系统是可行的。数字签名系统,可以减少人力、物力,减少了中间环节,降低了成本;突破了时间和空间的限制,使得交易活动可以在任何时间、任何地点进行,提高了效率;网站的社会效益,又可能得到受益方给予的回报。所以,从经济角度考虑,开发产品网上交易系统是完全可行的。3.1.3管理可行性由于网站的操作是基于B/S浏览器的页面操作,简单明了,用户无需学习,一般都能够很容易的知道如何操作。而管理员也无需具备专业知识,只需要对一些数据进行输入以及平时的日常维护就够了。3.2系统具备的功能1、系统有管理员、普通人员(增删改查)2、增加部门管理(增删改查)3、每个人员有属于部门4、内部文件只能同一部门的人查看5、外部文件可以大家都看到6、每次对文件的修改,上传进行记录,记录到人、时间,记录标识码

第四章数据库设计4.1数据字典-T_admin别名管理员信息表描述保存所有的管理员信息定义T_admin=ID+username+passwordinish位置A15管理员数据字典-T_dept别名部门信息表描述保存所有的部门信息定义T_dept=id+deptname位置A15部门数据字典-T_file别名文件信息表描述保存文件详细信息定义T_file=id+yhid+filename+fileurl+insertdate+qm+gs位置A15文件数据字典-T_yh别名用户信息表描述保存所有的用户信息定义T_yh=id+username+password+yhname+age+sex+phone+gh+deptid位置A15用户数据字典4.3E-R图图5-1评论E-R图图5-2注册用户E-R图图5-3新闻E-R图5-4留言E-R第五章详细设计5.1系统功能图1、管理员功能图管理员功能图2、用户功能图用户功能图5.2详细功能图1、登录界面登录界面管理员主界面 管理员查看部门 管理员添加部门查看文件列表查看用户管理员查看用户信息统计文件数量用户注册用户主界面用户上传文件用户查看文件用户修改自己的文件用户按照签名查看自己的文件用户修改自己信息

第六章系统出错处理6.1出错信息错误类型原因解决方法数据库中出现的连接错误数据库设置过程中的错误或者是连接的错误取消本次操作,然后提醒用户,检查可能出现的问题后改正用户输入过程中出现的问题用户输入不正确或者没有按照约定输入通过对话框的提醒,让用户取消本次操作,检查输入,输入正确的命令其他操作错误用户的不正当操作使程序发生错误中止操作提醒用户中止的原因和操作的规范。不可预知错误未知异常进行数据库备份,帮助开发者完善程序。6.2补救措施在开发设计过程中,本系统并没有很好很完善完成所有的操作,所以在用户操作的过程中,可能会出现很多我们不可预知的问题,所以在此处,我们总结了很多可能会出现的问题,并且对可能出现的问题做一个归类处理,分别总结了不同问题所对应的处理方式,并且对不同的问题都进行了不同的处理。我分析错误,并且总结出来主要的错误可能有:数据库连接错误:这类错误主要是数据库设置过程中的错误或者是连接的错误,或MySQL异常引起的,取消本次操作,然后提醒用户,检查可能出现的问题后改正输入错误:这主要是用户输入不正确或者没有按照约定输入,我们在尽量减少用户出错的条件的情况下,通过对话框的提醒,让用户取消本次操作,检查输入,输入正确的命令其他操作错误:其他可能出现的错误也可能是由于用户的不正当操作,有可能使程序发生错误。我们主要是中止操作,用对话框的形式提示错误信息,并提醒用户中止的原因和操作的规范。其他不可预知的错误:程序也会有一些我们无法预知或没考虑完全的错误,我们对此不可能作出安全的异常处理,这时我们主要要保证数据的安全,所以要经常的进行数据库备份,并能及时的和我们联系,以逐步的完善我们的程序。

第七章数字签名系统的前景与展望7.1数字签名的安全性分析对于一个完整的数字签名系统而言,安全性是其要求的第一位,RSA体制的安全性决定于RSA公开密钥密码算法的安全性,在设计RSA数字签名系统时为了保证其安全性,应注意以下几个问题:1)根据被加密文件的重要程度和加密时间的要求来选择n的长度。因为RSA的安全性则是依赖于分解大素数的难度。随机选择足够大且相互之间差别比较大的素数p和q来提高系统的安全性(目前应在512位以上),解密密钥d相对模n不应过小。因为若d达到n的1/4大小,且e比n小,则有方法可以恢复d;2)在使用RSA的通信网络协议中,不应该使用公共模n,这是因为已经知道了对于一个加密/解密密钥指数对,攻击者就能分解这个模,也就可以不分解n来计算出别的加密/解密对;3)不要让攻击者得到原始的解密结果;4)相关的消息不要用相同的密钥加密;5)在实际运用中不要对一个陌生人提交的随机消息解密,不对自己一无所知的信息签名,要先利用一个单向散列函数对消息进行散列hash(MD5)处理,尽管Hash(MD5)算法是公开的,但是根据hash(MD5)值计算出明文在统计学上是不可能的。因此仅重视RSA的实现是不够的,实现细节也很重要。总之,对一个数字签名系统而言,重要的是从整体上研究,而不应局限于系统的一部分。仅有一个安全的算法是不够的,整个密码系统必须是安全的。7.2数字签名的前景与展望基于RSA算法的数字签名在2000年的第六届国际密码学会议上被推荐为公钥密码系统的加密算法中的一种,则RSA数字签名有较好的发展空间。对于未来的加密、生成和验证数字签名的工具还需完善,只有用SSL(安全套接层)建立安全连接的Web浏览器,才会频繁使用数字签名,公司要对其员工在网络上的行为进行规范,就要建立广泛协作机制来支持数字签名,支持数字签名是Web发展的目标,确保数据保密性、数据完整性和不可否认性才能保证在线商业的安全交易。和数字签名有关的复杂认证能力就像现在操作、应用环境中的口令保护一样直接做进操作系统环境、应用、远程访问产品、信息系统等中。数字签名作为一项信息加密和安全传送技术,越来越得到人们的重视,其中它涉及到的关键技术也很多,并且很多新的协议,如网上交易安全协议SSL、SET协议都会涉及到数字签名,因此数字签名将得到广泛的应用和人们的首选。但是运用越来越广泛的网络安全技术数字签名,今后也很可能导致毫无私密可言

结论以上是对整个数字签名系统的实现技术、系统功能、开发环境以及数据库使用等方面的介绍和总结。整个网站从需求分析设计到编码实现以及测试的这个过程中,无论是系统设计上还是系统程序代码的编写上都遇到了很多问题。个人对于平台的搭建和系统程序的代码编写上不是很擅长,因此在这两个部分花费了大量的经历。尽管数字签名系统的基本功能已经实现了,但是还是由于个人学术水平不高,在这之前并没有真正独立完成过一个系统的设计与实现,因此,本数字签名系统的功能还不能达到十全十美,在系统的安全性以及稳定性上将,也不能达到一个很高的水平。界面的美观性方面还可以有进一步的提升。通过查阅相关文献和网络资料,能够对数字签名系统有一个更好的认识,对系统的各个功能模块进行了划分。在过程中遇到难题,及时的进行学习。系统主要使用JSP/Java语言开发,通过边学习相关知识,边开发的方式,对开发过程中遇到的问题,先尽力解决,对不能独立解决的问题,及时和老师沟通,寻求解决问题的最佳思路,一步一步实现数字签名系统的各个功能。在这次毕业设计过程中,不仅巩固了自己软件开发的基本功,同时还对实际动手能力有了很大的提高。在整个过程中,经常会遇到瓶颈,实则瓶颈就像一层窗户纸,只要有毅力不放弃一直研究下去就会弄明白。毕业设计是个很好的锻炼机会,让我们可以讲书本上的理论知识很好的应用到实践中去。而且像美工、页面设计这些知识都是通过此次的系统设计和实现学到的新知识。现行的这个数字签名系统还有很大的提升空间,在今后的使用过程当中可以随着客户的需求和资料的收集中逐步完善。而且,在一些新功能、特殊功能的改善上,还有很多技术知识需要去学习。

参考文献[1]陈旭东,刘迪仁.JSP2.0应用教程[M].清华大学出版社,北京交通大学出版社,2006[2]邱哲,王俊标,马斗.StrutsWeb设计与开发大全[M].清华大学出版社,2006[3]付京周.Hibernate3.0—Java数据库持久层开发实践[M].人民邮电出版社,2007[4]耿祥义,张跃平.Java大学实用教程[M].电子工业出版社,2008[5]萨师煊,王珊.数据库系统概论[M].高等教育出版社,1997[6]张洪伟.TomcatWeb开发及整合应用[M].清华大学出版社,2006[7]计磊,李里,周伟.精通J2EE—EclipseStrutsHibernateSprint整合应用案例[M].人民邮电出版社,2007[8]周竞涛,李山,赵寒等.Eclipse完全手册—基础·进阶·高级[M].电子工业出版社,2007[9]李振捷,陈雄,王军.JSP网站开发典型模块与实例精讲[M].电子工业出版社,2007[10]张洪伟.JSP网络开发技术与整合应用[M].清华大学出版社,2006[11]刘智勇.HTML+CSS开发指南[M].人民邮电出版社,2007[12]郭荷清,林拉,张为.现代软件工程—原理、方法与管理[M].华南理工大学出版社,2005[13]王润森,王俊杰.精通JavaScript动态网页编程(实例版)[M].人民邮电出版社,2007[14]林建宏,赖慧敏.Dreamweaver8和JSP动态网站开发[M].机械工业出版社,2007[15]思志学.自己动手写Struts—构建基于MVC的Web开发框架[M].电子工业出版社,2007[16]陶勇,李晓军.HibernateORM最佳实践[M].清华大学出版社,2007[17]卢开澄.计算机密码学[M].北京:清华大学出版社,1998。[18]冯登国,裴定一.密码学导引[M].北京:科学出版社,1999。[19]蔡乐才,张仕斌.应用密码学[M].北京:中国电力出版社,2005。[20]蔡庆华.公钥密码体制RSA算法[J].安庆师范学院学报(自然科学版),2003,(4):69-70。[21]赖溪松.计算机密码学及其应用[M].北京:国防工业出版社,2001。[22]宋震.密码学[M].北京:中国水利水电出版社,2002。[23]张周.我国企业开始重视网络安全[J].计算机世界A9版,2000,(3):25-28。[24]张仕斌,谭三.网络安全技术[M].北京:清华大学出版社,2004。[25]MaoW著,王继林等译.现代密码学理论与实践[M].北京:电子工业出版社,2004。[26]AtreyaM等著,贺军等译.数字签名[M].北京:清华大学出版社,2003。[27]王勇.RSA公开密钥密码体制的密钥生成研究[J].计算机应用研究,1998,(3):21-24。PAGE33致谢经过几个月的努力我的毕业设计终于完成了,但是现在回想起来做毕业设计的整个过程,其中有苦也有甜,艰辛同时又充满乐趣,不过乐趣尽在其中!通过本次毕业设计,在还没有真正落实到具体工作以前,毕业设计在我心中就类似于对这几年来所学知识的总结和归纳,但是当真正落实毕业设计的工作时,发现毕业设计不仅是对前面所学知识的一种验收,更是对自己能力的一种提高。首先感谢XXX老师的鼓励和指导,从设计方案的选定与调研,设计计划的安排,具体功能的实现,出现问题的解决,毕业论文的撰写及至论文定稿的全过程。完成这个数字签名系统设计与实现,以及整个系统的设计和实现为我将来踏上工作岗位有很大的帮助和提高。尽管自知自己的学术水平不是很高,能力有限但是努力无限,这也是对自己的一次考验。在本次程序的设计过程当中,按部就班按照软件设计步骤进行的。从需求分析、可行性分析、编写项目计划署,系统目标的确立、系统功能的结构划分、系统流程图的设计以及构建开发环境等。再到数据库的分析、创建数据库以及数据表等。稍微有些难度的是前台页面设计和信息的显示。后台的页面设计相对简单的多。在程序代码的编写过程中,遇到了很大的困难,调试过程中经常会出现不可预知的错误,整个开发设计的过程能够顺利并且几近完美的进行下去不仅需要耐心需要学习、同时也少不了知道老师孜孜不倦的教诲。让我在顺利完成整个设计的同时也学到了不少知识。在这个将前三年学习的所有的理论融会贯通,应用到实际操作中,过程比我想的多很多,但是幸好,坚持到了最后,在完成的过程中大大提高了自己动手的能力,使我充分体会到了在开发设计过程中的酸甜苦辣,同时也明白了在这个过程中付出的越多,收获也就越多,同时也感觉到,冰冻三尺非一日之寒,很多的东西,都需要总结,需要在生活的点点滴滴中去发现,更多的还是要感谢老师孜孜不倦的教诲与同学们所有的帮助。虽然最后做出来的这个东西不是很尽人意,但是,努力过了,就可以了,在以后的学习中,会不断的进取,不断的完善,争取把设计做的尽善尽美,在整个过程中所学习到的东西,所收获的东西,永远都是受益无穷的,这也将使我终身受益。在开发过程中收获到的所有的东西,是我一生最大的财富。这个设计和论文的完成,凝结着老师和大家汗水。你们无私的帮助和支持,使我的设计工作顺利完成,在此,本人表示衷心的感谢和诚挚的谢意,谢谢你们!

附录一部分代码admincontorlpackagecom.sxl.controller.admin;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importorg.springframework.http.ResponseEntity;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcom.sxl.controller.MyController;@Controller("adminController")@RequestMapping(value="/admin")publicclassAdminControllerextendsMyController{ @RequestMapping(value="/index") publicStringframe(Modelmodel,HttpServletRequestrequest)throwsException{ return"/admin/index"; } @RequestMapping(value="/main") publicStringmain(Modelmodel,HttpServletRequestrequest)throwsException{ return"/admin/main"; } @RequestMapping(value="/password") publicStringpassword(Modelmodel,HttpServletRequestrequest)throwsException{ return"/admin/password"; } @RequestMapping(value="/changePassword") publicResponseEntity<String>loginSave(Modelmodel,HttpServletRequestrequest,StringoldPassword,StringnewPassword)throwsException{ Mapadmin=getAdmin(request); if(oldPassword.equals(admin.get("password").toString())){ Stringsql="updatet_adminsetpassword=?whereid=?"; db.update(sql,newObject[]{newPassword,admin.get("id")}); returnrenderData(true,"1",null); }else{ returnrenderData(false,"1",null); } }}yhcontrolpackagecom.sxl.controller.admin;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importorg.springframework.http.ResponseEntity;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcom.sxl.controller.MyController;@Controller("ygController")@RequestMapping(value="/yg")publicclassYgControllerextendsMyController{ @RequestMapping(value="/index") publicStringframe(Modelmodel,HttpServletRequestrequest)throwsException{ return"/yg/index"; } @RequestMapping(value="/main") publicStringmain(Modelmodel,HttpServletRequestrequest)throwsException{ return"/yg/main"; } @RequestMapping(value="/password") publicStringpassword(Modelmodel,HttpServletRequestrequest)throwsException{ return"/yg/password"; } @RequestMapping(value="/changePassword") publicResponseEntity<String>loginSave(Modelmodel,HttpServletRequestrequest,StringoldPassword,StringnewPassword)throwsException{ Mapyg=getYg(request); if(oldPassword.equals(yg.get("password").toString())){ Stringsql="updatet_ygsetpassword=?whereid=?"; db.update(sql,newObject[]{newPassword,yg.get("id")}); returnrenderData(true,"1",null); }else{ returnrenderData(false,"1",null); } } @RequestMapping(value="/mine") publicStringmine(Modelmodel,HttpServletRequestrequest)throwsException{ Stringsql="select*fromt_dept"; model.addAttribute("deptList",db.queryForList(sql));Mapyg=getYg(request);Mapmap=db.queryForMap("select*fromt_ygwhereid=?",newObject[]{yg.get("id")});model.addAttribute("map",map); return"/yg/mine"; } @RequestMapping(value="/mineSave") publicResponseEntity<String>mineSave(Modelmodel,HttpServletRequestrequest,Longid ,Stringusername,Stringpassword,StringygName,Stringage,Stringsex,Stringphone,Stringgh,IntegerdeptId)throwsException{ intresult=0; Stringsql="updatet_ygsetygName=?,age=?,sex=?,phone=?,gh=?,deptId=?whereid=?"; result=db.update(sql,newObject[]{ygName,age,sex,phone,gh,deptId,id}); if(result==1){ returnrenderData(true,"鎿嶄綔鎴愬姛",null); }else{ returnrenderData(false,"鎿嶄綔澶辫触",null); } } }filecontrolpackagecom.sxl.controller.admin;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importorg.springframework.http.ResponseEntity;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcom.sxl.controller.MyController;@Controller("fileController")@RequestMapping(value="/admin/file")publicclassFileControllerextendsMyController{ @RequestMapping(value="/frame") publicStringframe(Modelmodel,HttpServletRequestrequest,Stringflag) throwsException{ return"/admin/file/frame"; } @RequestMapping(value="/list") publicStringlist(Modelmodel,HttpServletRequestrequest,Stringflag, StringfileName,Stringqm)throwsExcept

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论