本站联系方式
   联系QQ  :1095080675
   联系QQ  :1223950575
  技术指导:1353934434
  
  电子邮箱:1095080675@qq.com
标题  基于JAVA的DES加密解密算法的实现
编号  10249
编程技术  Java
数据库  无
开发环境  Eclipse/MyEclipse
资料明细  毕业论文、设计(源码)、答辩PPT、开题报告、文献翻译、任务书
推荐指数  ★★★★★
内容简介

4程序详细设计和实现
4.1程序结构分析和设计
DES密码系统总体包括两部分:加密过程和解密过程。但由于DES的加密和解密采用的算法完全相同,所以把加密方法和解密方法整合在一起,把加密或解密的操作作为方法的一个参数传进入,让程序识别是加密操作或解密操作就可以了。
desEncrypt(byte[] des_data, int flag)
其中flag就是加密或解密的操作标志,当flag等于1时执行加密操作,当flag等于0时执行解密操作;des_data是需加密或解密的数据。
此外还应该注意几点:
1.明文分组长64位,对明文进行分组时最后一个分组长不够64位时,就要补足64位。补足方案有很多种,本程序采用的补足方案为PKCS5Padding。数据字节长度对8取余,余数为m,若m>0,则补足8-m个字节,字节数值为8-m,即差几个字节就补几个字节,字节数值即为补充的字节数,若为0则补充8个字节的8 。加密后的密文都是64位一组的,就不需要进行补位处理。但将密文还原成明文后,还应该对解密后的明文分组进行处理,删除加密时产生的填充位。取最后一个字节,值为m,则从数据尾部删除m个字节,剩余数据即为加密前的原文。采用PKCS5Padding方案的原因是还原明文时删除填充位很容易实现。
2.加密和解密时采用的子密钥的顺序不同。密钥确定后,每轮的子密钥也确定了。加密时使用从K1到K16的子密钥;解密时使用K16到K1的子密钥。
程序设计前还以为完成二个准备工作,怎么把byte数组转换为二进制的int数组?因为用户输入的密钥往往是一个字符串,转变成byte数组后再转变成二进制的int数组,因为只有二进制的int数组在程序中能方便地进行变换运算。
int[] readDataToBirnaryIntArray(byte[] intdata)
最后,还要将二进制的int数组还原成字符串,更直观。
void getEncryptResultOfByteArray(int[] data, byte[] value)
结果保存在value中。
首先获得明文byte数组,然后对byte数组进行分组,每64位一组。Java中byte是1个字节,8位,所以64位的明文分组需要用的byte长度为8。每组分别进行加密,共多少组就进行多少次加密。因此就应该抽象出一个单元Des加密方法。
byte[] unitDes(byte[] des_key, byte[] des_data, int flag)
在unitDes方法中首先对参数进行处理,使用readDataToBirnaryIntArray方法将des_key、des_data转变成二进制的int数组,加密后的结果还是二进制的int数组,使用getEncryptResultOfByteArray方法将结果转变成byte数组。 然后对密钥des_key进行初始化,产生子密钥,并保存。
void keyInitialize(int[] key, int[][] keyarray)
密钥的产生过程的原理前面已经描述清楚了,这里不再赘述。
摘要(中文) I
摘要(英文) II
1绪论 1
1.1 课题研究背景及意义 1
1.2课题研究现状 2
1.3 开发平台、开发技术的选择及介绍 3
2 DES加密算法 6
2.1 DES加密算法简介 6
2.2 DES的基本原理 6
2.3 DES的密钥产生 6
2.3 DES算法详细描述 8
2.3.1 DES加密过程 8
2.3.2 DES解密过程 13
3 DES加密算法的安全分析 15
3.1 迭代次数 15
3.2弱密钥 15
3.3 DES算法的密钥长度 15
3.4 S盒和P盒的安全分析 17
3.5 DES算法漏洞 17
3.6 关于其他攻击方法 18
3.7 多重DES算法 19
3.7.1二重DES 19
3.7.2三重DES 19
4程序详细设计和实现 21
4.1程序结构分析和设计 21
4.2程序的封装和接口优化 25
4.3系统实现演示 26
5 DES的应用展望 33
结论 34
参考文献 35
致谢 36

本系统功能结构图如下所示:
该DES加密解密算法实现程序运行主界面如下所示:

说明
  以上是程序功能介绍。 如果对以上内容感兴趣,可以QQ:1095080675或邮件1095080675@qq.com继续联系我们。
文章导航
  • 上一篇:基于JSP的高校就业信息管理系统(论文+程序)
  • 下一篇:基于JAVA的贪吃蛇游戏(论文+程序)