版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于java的两个通用安全模块的设计与实现摘要本文详细介绍了基于口令的身份认证与文件安全传输两个通用安全模块的 设计原理和实现过程,分析了当前口令保存的安全性,提出了运用md5算法等对 口令进行处理,并将处理结果保存在数据库中的方法。同吋为了进一步增强认证 系统的灵活度,设计了用户注册时的口令模式选择、自主修改用户口令、自主选 择口令字符串长度等策略。在本文设计的认证过程中,用户输入认证口令信息, 作必要的处理之后,会与数据库里的用户真实信息进行对比来验证用户的合法 性,合法用户登录成功后可以访问文件安全传输模块;而文件安全传输模块的设 计,是应用ssl协议建立文件安全传输通道,可以保障机密文
2、件内容不被窃听、 篡改、伪造。整个系统采用java语言对ssl协议、des、md5的支持设计实现的, 具有设计简练、认证灵活、安全性能可靠、成本低廉等优点,能很好地解决各类 企事业单位的用户身份鉴别和传输文件的机密性问题。关键词:身份认证;消息摘要;des; ssl;加密;解密the design and implementation of two general securitymodels based on javaabstractthe paper initiates the principle and implementation of two general security mod
3、ules of password-based authentication and secure file transfer. it analyses the security of the current password, then proposes an approach that utilizes md5 algorithm to encrypt password, finally stores the results in databases. to make the authentication system more flexibility, we introduce some
4、policies: when users register, they can choose password model, they can modify password freely, they can choose the length of password independently etc. in the authentication process designed in this paper, the user inputs password which is processed to compare with the information stored in db to
5、authenticate use匚 if logon successful they will be able to access the secure file transfer module. and the design of secure file transfer module is the use of the ssl protocol to establish security file transfer channels which can protect the confidential contents of the files against eavesdrop, alt
6、er and forge. the system is implemented in java that supports ssl protocol, des, md5, which has the following virtues: briefness in design, authentication agility, secure and cheap in cost, and can help all kinds of companies to solve the problems of identity authentication and confidentiality of fi
7、le transfe匸key words: authentication; message-digest; des; ssl; encryption; decryption论文总页数:27页1 引言11.1 课题背景11.2 国内外研究现状11.3 本课题研究的意义21.4 本课题的研究方法22 需求分析32. 1口令安全模块部分功能需求32. 2文件安全传输部分功能需求32. 3系统实现的环境和开发工具43 系统方案设计43.1 功能模块流程图43. 2口令安全模块部分方案设计83. 3文件安全传输部分方案设计93. 3. 1 des加密算法93. 3.2 ssl 协议103.4 数据库的设
8、计114 系统设计与实现124. 1总体结构图124.2 与数据库建立连接124. 3口令认证及存储方式设计134.4 数字证书创建134.5 关键代码说明135 测试20结论24参考文献25致谢26声明271引言1.1课题背景众所周知,随着计算机的发展与普及,计算机担负着存储、管理信息及资源 的任务,集中存放着大量数据资源,而且又为众多用户直接共享,而有些资源涉 及到机密性,因此这些资源被用户操作前一般需要用户验证用户名及其口令,获 得合法用户的操作权限。如果这些口令被非法用户得到,将会造成企业瘫痪,给 国家带来巨大的损失,甚至危及国家安全。因此,对访问系统的用户进行身份认 证就显得至关重要
9、,身份认证已经成为了计算机信息安全领域中非常重要的一个 分支。身份认证作为安全应用系统的第一道防线,是最重要的安全服务,所有其 它的安全服务都依赖于该服务,它的失败可能导致整个系统的失败而使身份认证 得以有效执行的前提就是相应口令的妥善保管。目前普遍采用的u令保存技术就 是将口令直接以明文方式保存。这种方法的特点是简单、易用并且也具备一定的 安全性,但随着计算机应用的复杂化、攻击手段的多样化,这种技术的安全缺陷 也越来越明显,己经不再适用于安全性要求较高的应用系统。不但计算机给人们带来了很多便利,计算机网络技术也日益广泛地应用到各 个领域。人们通过iruernet进行各种交流,在网上传输大量的
10、信息,应用层次 也在不断地深入,应用领域从传统的、小型业务系统逐渐向大型、关键业务系统 扩展,典型的如党政部门信息系统、金融业务系统、企业商务系统等,都涉及到 一些敏感数据文件的传输,如军事机密、信用卡号等。这些被传输的数据往往 涉及到企业的机密信息,在网络上传输容易面临着各种各样的安全威胁,如伪造、 欺骗、窃听、篡改、抵赖等。如何在传输过程中保障这些敏感数据文件的安全将 制约着网络技术在商业、金融、国防等领域的进一步发展,这一问题已成为当今 计算机网络技术研究的一个热点。如何解决文件传输中的安全,必须有-整套的 技术来保证信息的保密性、完整性,同时也应使信息的发送者能对信息的接收者 进行确认
11、,并且保证信息发送给可靠的接收者。1.2国内外研究现状现在很多计算机应用程序使用的认证方法都是最简单的口令形式,类似于 windows xp操作系统登录过程屮输入用户名/口令的基本认证方式。就是系统事 先保存每个用户的二元组信息(用户名,密码)。进入系统时用户先输入用户名和 口令,系统根据保存的用户信息与用户输入的信息相比较,从而判断用户身份的 合法性。很明显,这种身份认证方法操作十分简单,但同时又最不安全,因为其 安全性仅仅基于用户口令的保密性,而用户口令一般较短且容易猜测,不能抵御 字典攻击,又由于系统一般将正确的用户口令直接存放在程序、文件或数据库屮, 一方而需要系统管理员是可信赖的,另
12、一方而,一旦攻击者能够访问口令表,或 被黑客窃取到,整个系统的安全性就受到了威胁。而保护在网络中传输的数据采 用传统的密码技术(对称密码技术),这在一定程度上解决了文件传输保密性问 题,但在进行保密通信前,通信双方必须通过某种安全手段得到密钥,这在某些 情况下是非常困难甚至是不可能的。安全套接层协议ssl (secure socket layer) 是用来保障数据安全传输的协议,在internet上为通信双方提供可靠连接方式 下的防窃听、防篡改、防信息伪造的秘密通信,保障数据的安全传输。目前ssl已 成为业界标准,得到了广泛应用,应用比较灵活。1. 3本课题研究的意义目前,计算机在金融、商业、
13、政治等部门的应用越来越广,防止非法用户通 过身份欺诈访问系统资源,变得日益重视。还有各部门在网络上传输文件时,这 些被传输的文件如果涉及到机密信息,很容易遭受各种各样的攻击,保护这些机 密信息的安全也成为信息化健康发展所要考虑的重要事情之一。木毕业设计选择 两个安全模块的设计与实现主要设计口令部分安全模块实现合法用户验证和口 令的安全保存和文件安全传输模块实现文件的安全、秘密、可靠传输到接收端。 口令部分安全模块具有合法用户验证模块可以进行用户身份注册,安全生成口 令,口令更改,口令长度选择,口令生成个数身选择,身份验证等功能。文件安 全传输模块具有基于口令的文件加密解密和文件安全传输等功能。
14、设计中除了综 合运用以前所学知识(包括以前所学的一些关于网络、编程、信息安全等知识) 的能力,同时也了解当今安全技术及编程的一些新技术;既锻炼了实际动手能力, 乂引导我进行了一次模拟实际产品的开发,对于以后工作能力的培养具有重要的 意义。1. 4本课题的研究方法本系统的设计重点是实现口令部分安全模块与文件安全传输模块。具体实现 口令的生成、口令的保存及文件的安全传输等主要功能,并将口令生成和文件加 密的实现方法封装,方便程序调用。本毕业设计首先结合本次毕业设计的相关要 求写岀需求分析;其次,综合运用以前所学的相关知识(包括java开发语言、 计算机网络技术、相关协议、信息安全相关的知识等)以及
15、借鉴现有的口令身份 认证和基于ssl协议数据安全传输的技术原理,选择所熟悉的开发工具进行本毕 业设计的开发;在设计过程中以需求分析为基础,写出系统开发计划、实现流程 及相关问题的实现方法,并将两个安全模块实现的关键技术进行封装,提供接口, 方便他人调用;同吋,在开发设计与实现中,要保存好相关的设计文挡,为后面 毕业论文的写作准备材料;最后,系统开发完毕后,进行调试和测试运行,做好 调试和测试运行的相关记录,也为后面的毕业论文的写作准备材料。2需求分析2.1 口令安全模块部分功能需求1. 用户登录模块用户安全登录模块为用户提供身份验证的入口。用户可以根据自己使用口令 的类型选择相应的登录模式登录
16、,用户的登录类型根据口令的处理方法不同分为 默认类型和一次性类型。2. 口令处理模块为了使口令保存的安全性更高,要求用户口令在数据库中不能以明文的方式 保存在口令表中。对口令的保存及处理有两种方法,一种是默认处理方法,即口 令经处理后以另外一种方式存在口令表中,另一种是一次性口令的处理方法,使 口令表中的口每进行一次成功的登录,口令表中的口令信息都进行相应的变化, 根据口令的类型调用相应的处理方法来处理口令的。3. 口令注册模块口令注册模块为用户提供口令注册信息。为了增强口令注册的灵活度,方便 用户使用自己的口令,用户可以根据自己的喜好选择注册口令的模式,其中口令 注册有两种类型,一种为默认型
17、,一种为一次性口令。用户在一次性口令中可以 选择口令的长度、个数等,在一次性口令注册成功后,生成的一系列口令可以生 成一个口令文件,为用户查看口令提供了便利。4. 口令更改模块口令更改模块可以为用户提供口令的更改,尤其是对使用一次性口令的用 户,如果他用完了限定的口令,可以不用重新注册,而再次获得有效的一次性口 令。用户可以根据口令的类型按要求输入相关的信息更改自己的口令。2. 2文件安全传输部分功能需求1. 客户端文件安全传输模块客户端文件安全传输模块可以进行文件的选择及上传。用户身份验证成功后 可以选择要上传的文件,经相应用户的口令加密后再经ssl协议的安全通信密道 传递给服务器使文件在传
18、输过程中进行双重保护。2. 服务器端文件接收模块服务器端文件接收模块可以接收客户端发过来的秘密文件。服务器与客户端 建立ssl连接成功后接收客户端发送过来的秘密文件,并将之保存在服务器端选 定的目录里。3. 服务器秘密文件解密模块服务器秘密文件解密模块可以打开秘密文件读取密文中的解密参数并生成 相应的解密密钥将密文解密,解密后的明文显示在文本框里,同吋将明文保存在 系统自定义的目录里,方便接收端对明文进行处理。2. 3系统实现的环境和开发工具本系统是在windows xp环境下,采用j2sdk1.4开发工具,使用java语言 开发的,并采用sql server 2000作为数据提供者。java
19、语言是一种很优秀的语言,是目前软件设计中极为壮健的编程语言, 只要提供了 java解释器,java编写的软件在执行码上兼容。九眩作为一种程序 设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、 并且提供了并发的机制,具有很高的性能。其次,ja眩还提供了丰富的类库涉 及加解密、消息摘要等,使程序设计者可以很方便地调用这些方法进行二次开发。 另外,在jdbc诞生之后,ja眩在数据库应用领域获得了成功的应用,大大降低 了 java语言操作数据库的复杂程度,可以将重心放在功能实现上。sql server 2000是微软公司开发的一个关系数据库管理系统,以 transact_sql作
20、为它的数据库查询和编程语言。t-sql是结构化查询语言sql 的一种,支持ansi sql-92标准。它上手容易,由于sqlserver与windows界 面风格完全一致,ii有许多向导(wizard)"帮助,因此易于安装和学习。而且兼 容性良好,由于今天windows操作系统占领着主导地的位,选择sqlserver 定 会在兼容性方面取得一些优势。可以通过odbc数据库访问技术,用于java技术 制作的页面与数据库之间的连接。3系统方案设计3.1功能模块流程图为了方便系统方案的设计与功能的开发,在方案设计前,根据前面的需求分 析,将系统的功能划分为口令部分功能模块和文件安全传输部分
21、功能模块,这两 个模块又各自细分为各个小模块,各小模块的功能流程图如下:(-)口令部分功能模块流程图1. 登录模块流程图在登录模块中根据需求分析设计了两种登录系统的口令模式,一个是默认口 令模式,一个是一次性口令模式,当用户输入用户名及口令后,系统首先判断用 户选的是默认口令类型还是一次性口令类型,如果是默认口令类型,则调用系统 的默认口令处理方法将用户输入的口令经处理后,系统与数据库建立连接,连接 不成功系统提示出错信息,如果连接成功,系统将口令处理后的结果跟数据库中 口令表里的相应口令信息比较,经核对,口令信息一致则该用户可进入文件安全 传输模块进行操作,否则提示出错信息,要求用户重新骑证
22、口令。登录模块流程 图如图1所示。2. 默认注册模块流程图在默认注册模块中,用户输入用户名及口令。系统调用口令处理方法,接着 连接数据库,连接成功则将口令信息与数据库里的记录比较,如无重复,则将口 令及用户名写入数据库,并提示注册成功,如果写入数据库失败,则报失败提示。 默认注册模块流程图如图2。3. 一次性口令的注册模块流程图在一次性口令注册模块中,用户输入用户名、口令长度、口令个数及口令。系统调用口令处理方法,接着连接数据库,连接成功则将口令信息与数据库里的 记录比较,如无重复,则将最后生成的一个口令及用户名写入数据库,并显示用 户要求的口令个数,失败,则报告失败提示。一次性口令的注册模块
23、流程如图3。4. 默认口令更改流程图5. 一次性口令更改流程(-)文件安全传输部分功能模块流程图1. 文件传输流程图在文件传输模块中,用户首先选择一个要发送给服务器的文件。接着系统发 送与服务器建立ssl连接的请求,成功后,系统调用文件加密方法给文件加密后, 发送出去,发送成功失败都提示相应的消息。文件传输流程图如图6所示。2. 服务器接收文件及处理流程图在服务器接收文件及处理模块中,服务器响应客户端发来的ssl连接的请 求,成功后,服务器选一个目录保存密文,接收完毕后,发送接收成功提示。服 务器可以随时解密密文传输流程图如图7o3.2 口令安全模块部分方案设计根据口令部分功能模块流程图,口令
24、模块的方案设计主要涉及到两种方式用 于口令的认证及处理。两种方式用于口令设计:(1) 基于单向函数基于单向函数的方法是计算机存储口令的单向函数值而不是存储口令,当用 户将口令传给计算机时,计算机使用单向函数计算,然后把单向函数的运算结果 和它以前存储的单向函数值进行比较。由于计算机不再存储口令表,所以敌手侵 入计算机偷取口令的威胁就减少了。(2) 基于skey原理skey是进行口令认证方式之一,体现了一次性特性,它的实现过程如下: 当用户输入初始口令pass,系统计算passi=f (pass), pass2=f (passj ,pass(n+i)=f (passn) <>其中n+
25、1为用户要求生成的口令个数,系统将pass, pass, pass2, pass.这些口令给用户保管,而将pass(n+i)存在数据库里该用户的名字后面,当用户第一次登录时,输入用户名和口令passn,系统计算f (passn), 并把它和数据库里pass(n+1)比较,如果匹配,就证明该用户身份是真的。然后系 统将pass.代替pass(n+i)o用户将pass.作废,下次登录时用pass(n-i),以此类推。 当用完后重新再获取。以上这两种处理口令的过程中,消息摘要的生成是利用md5算法求得。md (message digest)消息摘要算法是一种单向散列函数,是当前最为普遍的哈希算 法,
26、md5是第5个版本。对任意长的输入,md5算法都将产生一个128位的输出。 md5算法是按512位进行处理的,首先它对输入的数据进行补位,使得数据位长 度对512求余的结果是448。具体补位操作:先补一个1,然后补0直至满足上 述要求,再用一个64位的数字表示数据的原始长度,这样数据就被填补成长度 为512位的倍数。接着对数据依次按每次处理512位,每次进行4轮,每轮16 步总共64步的数据变换处理,每次输出的结果为128位,然后把前一次的输出 作为下一次数据变换的输入初始值,这样最后输出一个128位的杂凑结果。3. 3文件安全传输部分方案设计根据文件安全传输部分功能模块流程图,文件安全传输的
27、方案设计主要涉及 到在文件传输前用des加密算法给要传输的文件加密得到一个加密后的密文,再 将密文通过系统建立ssl协议文件安全传输的安全通道传给密文的接收端。在接 收端密文接收成功后,接收端可以根据需要,将密文解密成明文,并自动保存在 系统默认目录下。3. 3.1 des加密算法des是一个分组加密算法,它将明文以64位为分组对数据加密。64位一组 的明文从算法的一端输入,64位的密文从另一端输出。des是个对称算法:加密 和解密用的是同一算法(除密钥编排不同以外)。密钥通常表示为64位的数,但 每个第8位都用作奇偶校验,因此密钥真正的长度是56位。整个算法是先经过 初始置换ip的处理扰乱数
28、据的原来顺序,然后进行16轮迭代运算,最后经过初 始置换tp的逆置换tp"得出64位的加密结果。整个算法如图8,其中一轮des 如图9所示。rm密钥口k.密钥3. 3.2 ssl 协议1. ssl协议概述ssl协议(secure socket layer,安全套接层协议)是基于对称密钥算法和 公钥加密算法的加密传输信道的协议,位于应用层与传输层之间,独立于应用层 协议,在ssl协议上可加载任何高层应用协议,应用程序可使用ssl应用接口为 各类客户端/服务器产品提供安全传输服务,现已成为保密通信的标准。ssl协 议采用rsa, des等加密技术来实现数据的保密性,采用md5信息摘要算法
29、等来 实现数据的完整性,使用数字证书进行身份认证。2. ssl协议体系结构ssl协议是一个屮间层协议,在0si模型中,ssl介于传输层(如tcp/ip)和 应用层之间,为应用程序提供了一条安全的网络传输通道,提供tcp/tp通信协 议数据加密、版本号、会话密钥、数据压缩方法、数据完整性校验算法、客户端 与服务器端身份验证等功能。它的主要目标是在两个通信应用z间提供私有性和 可靠性。3. ssl协议的分层模型ssl协议是一个分层的协议,共有两层组成。处于ssl协议底层的是ssl记 录层协议(ssl record protocol,它位于可靠的传输层协议(如tcp/ip)之上, 用于封装高层协议的
30、数据。高层协议主要包括ssl握手协议(ssl handshakeprotocol) > 改变加密约定协议(change cipher spec protocol) 报 警协议(alertpt,otocol)等。其中ssl握手协议允许服务方和客户方相互认证,并在应用层协议传送数据 z前协商出一个加密算法和会话密钥,是ssl协议的核心。ssl主要的工作流程包括:网络连接建立;与该连接相关的加密方式和压缩 方式选择;双方的身份识别;本次传输密钥的确定;加密的数据传输;网络连接 的关闭。4. 应用数据的传输过程(1) 应用程序把应用数据提交给本地的ssl;(2) 发送端的ssl根据需要:j使用指
31、定的压缩算法,压缩应用数据;b) 使用散列算法对压缩后的数据计算散列值;c) 把散列值和压缩数据一起用加密算法加密;(3) 密文通过网络传给对方;(4) 接收方的ssl3) 用相同的加密算法对密文解密,得到明文;b) 用相同的散列算法对明文中的应用数据散列;c) 计算得到的散列值与明文中的散列值比较;(5) 如果一致,则明文有效,接收方的ssl把明文解压后得到应用数据上交 给应用层。否则就丢弃数据,并向发送方发出警告信息。严重的错课有可能引起 再次的协商或连接中断。3.4数据库的设计在sql server 2000数据库系统里利用企业管理器创建一个名为mydb的数 据库,并在这个数据库中设计一
32、个表,表名为person,这个表用于记录注册用 户的用户名、口令信息、一次性口令的有效次数等相关信息,用户每次登录系统 都要到此表进行身份验证。表的设计如表1所示:表1用户相关信息表atributetypetdintnamencharpasswordncharrandnchartimesint表person的说明:1) id用户编号,类型是整型;2) name是用户注册名;3) password是主键,是口令经过处理后保存的口令处理结果;4) rand是随机数,用于加密传输的文件内容的相关参数之一;5) times是记录一次性口令用户登录的有效次数。4系统设计与实现4. 1总体结构图根据需求分
33、析及方案设计的结果,系统设计与实现的总体结构如图10所示。4. 2与数据库建立连接本系统是使用jdbc-odbc桥驱动程序连接数据库的,jdbc-odbc桥接器是用 jdbcodbc. class和一个用于访问odbc驱动程序的本地库实现的。首先建立odbc 数据源。odbc数据源存储了如何与指定的数据建立程序的连接的有关信息。先在windows odbc数据源管理器中,建立一个名为"person"的数据源的 步骤如下:在“控制而板”里的“管理工具”中打开odbc数据源管理器,选择 “系统dsn”标签,单击“添加”按钮,选择数据源的驱动程序为sql server, 输入数据
34、源名称为"person",服务器选“本地”,用“使用网络登录id的windows nt验证”,单击“下一步”,在“更改默认的数据库为”单选框,选择数据库为 “mydb”,单击“下一步”接受所有的默认选项。完成后,点“测试数据源”按 钮,测试提示成功,则数据源配置成功。接着可以在程序中调用class. forname 方法加载jdbc-odbc驱动程序,再调用drivcrmanagcr. gctconncction方法发出 连接请求。与数据库连接的部分代码如下:class. forname ( "sun jdbc odbc jdbcodbcdriver,z );st
35、ring url二"jdbc:odbc:person"connection inscrtconncction = drivcrmanagcr.getconnection( url);4.3 口令认证及存储方式设计木系统口令认证模块的默认口令实现的原理是基于单向函数,用md5算出口 令摘要,并保存在数据库里,以后每次登录都先将口令计算出摘要,与数据库里 的摘要比较。一次性口令实现原理及身份验证过程是基于skey原理,每次计算的方法是 当用户第一次注册时,用md5计算出口令的消息摘要,并从中截取用户要求的口 令长度的字符串,作为一个口令生成,如果用户口要求的口令生成的个数大于1
36、, 则将这个牛成的口令再用md5计算出口令的消息摘要,并从中截取用户要求的口 令长度的字符串,依此类推,计算出用户要求的个数,并将最后一个生成的口令 存于数据库中,当用户用这些口令进行身份验证时就与skey的认证过程一样。4. 4数字证书创建在dos下使用j2sdk提供的keytool工具创建密钥库,密钥库名为 mykeystore,添加一个名为mytest的证书,mykeystore密钥库为服务器的密钥 库。将mytest证书导出到cl ienttrust密钥库中。clienttrust密钥库为客户 端信任的密钥库。4. 5关键代码说明1. 口令生成及处理模块此模块使用的频率比较多,在用户登
37、录、注册、口令更改功能中都要反复用 到,因此将此模块功能封装在接口 productkey中,方便其它程序的调用。在接 口里定义了两个同名的方法 digestkey(string str)和 digestkey(string str, int a, int b),由myprocluctkcy类具体实现它的方法,其中str表示要进 行处理的口令字符串,a表示用户口令的长度,b表示用户输入口令的个数,前 一个方法用于默认口令处理返回一个些口令的摘要,后一个方法用于一次性口令 处理,返回一系列一次性口令。digestkcy(string str)是将用户输入的口令生成消息摘要,一次性口令的 处理方法d
38、igestkcy (string str, int a, int b)是将用户初始输入的口令生成 消息摘要,然后截取消息摘要字符串的前三个字符,后三个字符,接着根据用户 要求的口令长度a,再从消息摘要字符串中第14位开始截取3-6个字符,将这 三次取得的字符串连接一起得到一个一次性口令。然后将这个口令按上面方法再 产生一次性口令。依此循环,循环b次最后得到b个口令。最终生成用户要求数 量的口令及口令长度。此模块生成消息摘要的部分代码如下:mcssagedigcst m=mcssagedigcst gctlnstancc (md5);m.update (x. getbytes("utf
39、8");byte s =m digest();mcssagedigcst类提供了计算消息摘要的方法,首先生成m的对像,执行 update()方法将原始数据传递给该对象,然后执行digest 0方法得到消息摘要。一次性口令处理方法部分代码如下:public string digestkcy(string str, int a, int b) for(int j=0;j+) messagedigest m=messagedigestgetlnstance(md5);m.update (x. getbytes("utf8");byte s =m digest();str
40、ing result=""for (int i=0; i<s length; i+)result+=integer tohexstring(si); fir = resuit. substring(0, 3);sec = resultsubstring(29, 32);tir = resultsubstring(14, 14+len); c=fir concat(sec);v=c.concat(tir);pj=v;x=pj;return p;此代码中num为参数b传递给num的口令个数。fir, sec, tir为三次截取 的字符串,再由concat ()函数将这三个
41、字符串连接成一个一次性字符串口令, 保存在p数组中。再将刚生成的口令字符串传递给x字符串,进行下一个口令的 生成。如此循环num次,生成num个口令,最后由数组p返回所有生成的一次性 口令。2. 文件内容加解密处理模块此模块主要用来完成发送文件的加密和接收密文的解密,加密跟解密是基于 口令加密的,即由口令生成密钥。这部分功能在客户端发送文件及服务器端解密 文件都要使用,因此将此功能也封装在接口 enc_dec,在encdec中定义了加密 方法 encrypt(string passw, bytc rand, byte text)和解密方法 decrypt (string passw, byte
42、 rand, byte ctext),它们的第一个参数是 口令, 第二个参数是随机数,第三个参数是加解密的内容。由类myenc_dec具体实现它 的方法,这样方便调用,又简化程序。此模块中完成加密的部分代码如下:chart passwd=password tocharamay();pbekeyspec pbks=new pbekeyspec (passwd);secretkeyfactory kf=secretkeyfactory. getinstance(pbewithmd5anddes);sccrctkey k=kf gcncratcsccrct(pbks);cipher cp=ciphe
43、r. get instance (z,pbewithmd5anddesz,);pbeparameterspec ps=new pbeparameterspec(salt, 1000);cp. init (cipher. encrypt mode, k, ps);byte ctext =cp.dofinal (buff);类pbekeyspec用于保存口令,它的构造器传入的参数是字符数组,所以用 了字符串的tochararray()方法生成字符数组。secretkeyfactory类的 generatesecret ()方法用丁生成密钥。pbeparameterspec类用丁指定基丁口令 加密的
44、的参数,它的构造器的第一个参数为随机数(盐),第二个参数为进行迭 代计算的次数。通过cipher工厂类的gctlnstancc ()方法指定加密算法或解 密算法所用的算法名字,init()方法对cipher对象初始化,它的第一个参数指 定密码器准备进行加密述是解密第二个参数则是传入加密或解密所使用的密钥。 最后执行dofinalo,完成加密。解密方法类似于加密方法,只是在inito方法 对cipher对象初始化时第一个参数指定密码器准备进行解密操作。3. 保存密/明文处理模块此模块主要用来完成保存密文和明文的。由于加密明文中用到了随机数和口 令,要解密这样的密文必须要用相同的随机数和口令,因此
45、密文的前两个字节写 入口令占的字节数,接着写入八个字节的随机数,再写入口令,最后将密文写入。 当要解密文件时根据密文前而的口令长度即可得到口令跟随机数和密文起始内 容。进而调用解密方法解密。将这个模块封装在savcenc_ dccfilc接口中,由 mysaveenc_decfile类具体实现它的方法,有利丁简化程序,方便调用。4. 用户登录模块1) 系统实现功能介绍此模块主要完成用户的口令验证登录,由loginframe. java文件里的代码实 现,运行后的界而有用户名输入框、密码框、密码类型选择框及“确定”、“取消”、 “改口令”、“注册”四个按钮组成,其中单击各按钮进入相应的界而。在此
46、界面上口令验证的操作流程及程序处理如下:输入:用户名和密码,选择口令类型。处理:校验字符的有效性。检验用户是否满足输入的耍求,即检验用户名和口 令文本框是否为空,若为空,则提示用户输入用户名和口令。根据口令类型,选择相应的口令处理方法来处理口令,得到一个值。根据用户名和口令处理后的值到数据库中验证身份是否符合。如果身份验证成功,系统根据口令的类型判断数据库中的口令信息是否 替换。如果口令是默认型的则不用替换,如果是一次性口令类型的,则将此次登 录的口令替换数据库中的口令信息,并重新写入有效次数。关闭本窗体,进入文件发送界面。输出:登录失败信息。2) 此部分实现的关键类及方法说明loginfra
47、me. java 文件中类 loginframe 中的成员函数 logindispose ()用于 接收并校验登录口令的字符,然后引用包中接口 productkcy,根据其成员变量 choiceindex来判断口令类型,调用相应的接口 productkey中的方法来处理口 令,如果choiceindex值为0则用默认口令处理方法digestkey ()来处理口令, 返回一个处理后的消息摘要字符串数组,并将之到数据库里验证。如果 choiceindex值为1,则调用处理一次性口令的digestkey()方法,但是设b的 值为1,只生成1个口令并将之到数据库里验证。成员变量choiceindex的
48、值如 果是1,则将登录的口令(没经过处理)替换数据库里的口令信息以及更改有效 次数。替换数据库里的口令及有效次数代码如下:loginupdatcqucry = "update person set password 二'+logpass+"', times =/,+timcs+,/vhere name =' +lognamc+ and password二'"+inscrtpqss+"'"5. 默认口令注册窗口设置1) 系统实现功能介绍这部分主要完成用户的口令注册功能,由registerframe. jav
49、a文件里的代 码实现,运行后的界而有用户名输入框、密码输入框、确认密码输入框及“确定”、 “返回”两个按钮组成,其中单击各按钮进入相应的界而。在此界面上注册默认口令的操作流程及程序处理如下:输入:用户名、密码、确认密码。处理:校验字符的有效性。检查用户名是否满足输入的耍求,即检查用户名和 密码文本框是否为空,若为空,则提示用户输入用户名和密码。检验用户输入的口令与确认口令是否一致,如果一致则进行相应的口令 处理。执行插入过程。返回登录框。输出:注册成功或失败信息。2) 此部分实现的关键类及方法说明registerframe. java 文件中类registerframe 中的成员函数regin
50、foinput () 用于接收并校验注册信息的字符,然后引用包中的接口 produetkey中的成员函 数digestkey ()默认口令处理方法来处理口令,生成此口令的一个消息摘要,然 后连接数据库,执行插入数据库。6. 一次性口令注册窗口设置1)系统实现功能介绍这部分主要完成用户的一次性口令注册功能,由rcgistcrframcl. java文件 里的代码实现,运行后的界面有用户名输入框、密码输入框、确认密码输入框、 口令长度、口令个数及“确定”、“返回”两个按钮,其中单击各按钮进入相应的 界而。在此界面上注册一次性口令的操作流程及程序处理如下:输入:用户名、密码、确认密码。处理:校验字符
51、的有效性。检查用户输入的注册信息是否满足输入的要求,即 检查用户名、口令文本框、口令长度、口令个数等是否为空,若为空,则提示用 户输入。检验用户输入的口令与确认口令是否一致,如果一致则进行相应的口令 处理。执行插入过程。打开口令生成对话框。返回登录框。输出:注册成功或失败信息。2)此部分实现的关键类及方法说明registerframel. java 文件 中 的 类 regis terframe 1中的成 员函数 reginfoinput ()用于接收并校验注册用户输入的注册信息,然后引用包中的接口 productkey,调用接口中的一次性口令处理方法digcstkcy ()来处理注册用户输
52、入的初始口令,生成用户要求个数和长度的一系列相关联的口令,然后将最后一 个生成的口令执行插入数据库。用类kcydialog向用户显示并保存生成的其它口 令。7. 默认口令更改窗口设置这部分主要完成默认型口令的更改,由changcframc. java文件里的代码实 现,用户需要提供用户名,原口令、新口令、确认口令。系统先确定用户的合法 性,如果合法,则进行口令更改处理。实现方法类似于前面的默认口令身份认证 和注册。& 一次性口令更改窗口的设计这部分主要完成一次性类型口令的更改,由changeframe.java文件里的代码 实现,用户需要提供用户名,原口令、新口令、确认口令、口令长度、
53、口令个数。 原口令是用户在前一次生成的一次性口令中没有失效的口令。系统先确定用户的 合法性,如果合法,则进行口令更改处理。实现方法类似于前面的一次性口令身 份认证和注册。9.文件传输窗口设置1)系统实现功能介绍这部分主要完文件的选择、文件的加密、与服务器建立连接和秘密文件传输, 由myselectfile. java和mysslclicntfile. java文件里的代码实现,运行后的 界面有文件名框、打开文件选择对话框按钮、确定按钮、返回按纽。其中确定按 钮用于发送文件。在此界面上文件传输的操作流程及处理如下:输入:文件名。处理:校验字符的有效性。检查用户各输入是否满足输入的要求,即检查文件
54、 选择文本框是否为空,若为空,则提示用户选择文件。客户端与服务器建立连接,并验证服务器是否可信。验证成功后建立秘密通道,加密文件并将口令跟随机数一起通过秘密通 道发给接收端。返回登录框。输出:文件发送成功或失败信息。2)此部分实现的关键类及方法说明myselectfile. java 文件中的类 myselectfile 中的成员函数 openfile()用 于打开文件选择框,scntfile ()用于显示文件传输成功失败的信息。而在文件 mysslclicntfile. java 中类 mysslclicntfile 通过 system 类的静态方法 setproperty ()设置系统参数
55、javax. net. ssl. truststore,指定客户端信任的证 书,通过sslsocketfactory类型创建sockct对像,并用创建的对象的 crcatcsockct ()方法和服务器指定的端口建立连接。通过gctoutputstrcamo方 法得到输出流,通过该输岀流发送的信息将加密后传给服务器程序。由random 类生成随机数,并将口令与随机数一起传递给类myenc_ dec实现接口 enc_dcc 中的encrypt ()方法用于加密文件内容。此部分与接收端建立连接及指定密钥库代码如下:system setproperty (,zjavax net ssl. trust
56、store,z, "clienttrust");sslsockctfactory ssf=(sslsocketfactory)sslsocketfactory. getdefault();s = ssf. createsocket (z,127. 0. 0. l/z, 5432);10.服务器接收窗口设置1)系统实现功能介绍这部分主要完成密文的接收、保存、解密相应的密文、并将解密后的文本显 示在文本框中并保存在一个默认的目录中,由mysslserverrule. java文件和 myserverfile. java文件里的代码实现。运行后的界面有两个文件名框、“打开 文件选
57、择对话框”按钮、“保存文件选择对话框”按钮、明文显示文本框。其中 接收密文区里的“文件选择对话框”按钮用于保存接收的文件,明文区里的按钮 用于打开密文执行解密。在此界面上密文接收并解密、明文显示、保存明文的操作流程及程序处理如 下:输入:文件名。处理:服务器监听客户机是否有连接请求。服务器发证书给客户端证明自己的身份,身份认证成功后建立文件传输 的安全通道。接收客户端发来的密文。解密指定的密文,并显示在明文文本框中,同时保存明文到默认的目录。 输出:密文保存成功或失败信息。2)此部分实现的关键类及方法说明mysslserverrule. java 文件中类 mysslserverrule 中通
58、过 system 类的静态 方法sctpropcrty ()设置两个系统参数。方法中的第一个参数是系统参数的名 称,javax. net. ssl. kcystorc指定密钥库的名称;第二个参数是为系统参数设 置的值,javax. net. ssl. keystorepassword指定密钥库的密码。通过 sslscrvcrsocketfactory 类型的对像创建 scrvcrsocket 对像。accept ()方法用 等待客户程序连接,scrvcrsocket的gctinputstrc3ni()方法可以得到输入流, 通过该输入流读取客户端发送来的信息并自动解密。类mysaveenc_decfile实现 密文、明文的保存。类myenc_dcc实现接口中enc_dcc的decry
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机空气动力学课件 1.1.2气体状态方程
- 2026年岩土工程师试卷附答案详解【模拟题】
- 2026年药学(中级)练习试题及答案详解【必刷】
- 2026年汽车维修工五级理论知识模拟题库及答案详解【真题汇编】
- 2026年自考专业(计算机应用)押题宝典模考模拟试题及参考答案详解(满分必刷)
- 【低空经济】无人机地理调查系统设计方案
- 江西省赣州市经开区2025-2026学年八年级上学期期末语文试题(含答案)
- 2026年简单幼儿园
- 2026年工作访谈幼儿园
- 2025福建漳州市九龙江集团有限公司哈尔滨工业大学专场招聘3人笔试参考题库附带答案详解
- 摩根士丹利 -半导体:中国AI加速器-谁有望胜出 China's AI Accelerators – Who's Poised to Win
- (2026年)世界哮喘日:让每位哮喘患者都能获得抗炎吸入剂-这仍是当务之急课件
- 中国中煤能源集团有限公司2026届高校毕业生春季招聘备考题库及答案详解(各地真题)
- 2026年地铁行车调度业务实操试题
- 幕墙预埋件检测标准与操作指南
- 广东省广州市2026年中考模拟数学试题七套附答案
- 2025年心理健康教师招聘考试试题及答案
- 2026年四川省宜居宜业和美乡村建设整县试点申报指南
- 《眼科临床诊疗指南(2025版)》
- 家庭基金内部管理制度
- 高血压糖尿病培训教学课件
评论
0/150
提交评论