- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
JAVA课程设计
题目:文件的加密与解密
姓名:
学号:
班级:
日期:
指导老师
分数
目录
一、设计思路 3
二、具体实现 3
三、运行调试与分析讨论 8
四、设计体会与小结 11
五、参考文献 12
六、附录 12
一、设计思路
自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。目前,Java已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。使用Java的安全机制设计和实现安全系
统更具有重要的应用价值。
本课程设计,主要实践Java安全中的JCE模块,包括密钥生成,Cipher对象初始
化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。
二、具体实现
本系统通过用户界面接收三个参数:明文文件、密文文件、口令。采用DES加密算法,密码分组链(CipherBlockChaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。因为CBC涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象 (SealedObject)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所
示:
设计文件加密解密的界面
设计文件加密解密的界面
实现hash算法,用于产生口令的hash值
实现由口令hash值产生密钥的算法
实现文件解密算法
解密按钮事件
实现文件加密算法
加密按钮事件
文件加密与解密设计流程图
本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。定义的几个参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。包和类
结构图如下所示:
本课程设计,包和类结构图:
PackageDefault-ClassJCEDialog//文件加密解密窗口类
PackageShares-ClassHashDigest、Classbyte2hex//密码Hash值生成类、二进制转字符串类
PackageSecretKey-ClassGenerateKey//由密码Hash值生成秘密密钥类
PackageEncAndDec-ClassDec、ClassEnc//文件加密、解密类
以下为包中的类的方法实现说明
PackageShares类结构图
PackageShares
publicclassHashDigest
密码Hash值生成方类,使用默认构造方法。
public
StrPassword)
byte[]HashDigest(String
密码Hash值生成方法
MessageDigest对象生成,使用类的
getInstance(StringDigestAlgorithm)方法。
1)输入产生摘要的原始数据,使用报文摘要
对象MesDigest的update方法,接收byte[]类型的输入,因此需要交String类型预先
转化为byte[]类型。
2)报文摘要的产生可以直接调用报文摘要对象MesDigest的digest方法,也可以将输入的byte[]类型作为参数而省去update
方法调用。
publicclassbyte2hex
二进制转字符串类
publicStringbyte2hex(byte[]b)
该方法接收byte[]类型的二进制数据。将二进
制数据转为字符串,以便于观察和对比,便
于调试程序。
PackageSecretKey类结构图
PackageSecretKey
publicclassGenerateKey
由密码Hash值生成秘密密钥类,使用默认构
造方法。
PublicSecretKeyGenerateKey(byte[]
KeyData)
由密码Hash值生成秘密密钥方法(由
hashDigest算法产生byte[]类型的hash值,再
由此hash值生成对称密钥的算法)
算法中用到了两个重要的类
1)DESKeySpec
文档评论(0)