1、JAVAJAVA 课程设计课程设计 题目: 文件的加密与解密 姓 名: 学 号: 班 级: 日 期: 指导老师 分 数 目 录 一、设计思路.3 二、具体实现.3 三、运行调试与分析讨论.8 四、设计体会与小结11 五、参考文献12 六、附录12 一、一、 设计思路设计思路 自从 Java 技术出现以业, 有关 Java 平台的安全性用由 Java 技术发展所引发的安全 性问题,引起了越来越多的关注。目前,Java 已经大量应用于各个领域,研究 Java 的 安全性对于更好地利用 Java 具有深远的意义。使用 Java 的安全机制设计和实现安全系 统更具有重要的应用价值。 本课程设计,主要实
2、践 Java 安全中的 JCE 模块,包括密钥生成,Cipher 对象初始 化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。 二、具体实现二、具体实现 本系统通过用户界面接收三个参数:明文文件、密文文件、口令。采用 DES 加密算法, 密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding 的分组填充算法。 因为 CBC 涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象 (Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解 密密钥三都密封到一个对象中了。口令
3、的 hash 值作为产生密钥的参数。设计流程图如下所 示: 设计文件加密解密的界面 实现hash算法,用于产生口令的hash值 实现由口令hash值产生密钥的算法 实现文件加密算法 加密按钮事件 实现文件解密算法 解密按钮事件 文件加密与解密设计流程图 本系统中,包含 Default,Shares,SecretKey,EncAndDec 四个包共 6 个类组成。定义的几个 参数:MAX_BUF_SIZE 为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法 为 DES;加密模式是密码分组链(CBC)模式;分组填充方式是 PKCS#5Padding。包和类 结构图如下所示: 本课程设计,包
4、和类结构图: Package Default - Class JCEDialog/文件加密解密窗口类 Package Shares - Class HashDigest、 Class byte2hex/密码 Hash 值生成类、 二进制转字符串类 Package SecretKey - Class GenerateKey/由密码 Hash 值生成秘密密钥类 Package EncAndDec - Class Dec、Class Enc/文件加密、解密类 以下为包中的类的方法实现说明 Package Shares 类结构图 Package Shares public class HashDigest 密码 Hash 值生成方类,使用默认构造方法。 public byte HashDigest(String StrPassword) 密码 Hash 值生成方法 MessageDigest对 象 生 成 , 使 用 类 的 getInstance(String Diges