一.系统预览
1. 系统的主界面,见下图
2. 系统的菜单栏说明:
1) 文件菜单:包含两个子菜单,DES文件加密,DES文件解密。
2) 文件夹菜单:包含两个了菜单,DES文件夹加密,DES文件夹解密。
3) 算法演示说明:RSA信息加密解密,AES文件加密与解密,大文件加密与解密
4) 数字签名:MD5和SHA对文件,字符计算Hash值
5) 系统帮助:系统帮助
3. 系统的工具栏说明:
1) AES文件加密
2) DES文件加密
3) DES文件解密
4) RSA信息加密
4. 系统的视图栏说明:
1) 帮助显示栏:能提供各个加密,解密视图的操作帮助。用户通过点击各视图中的操作帮助,然后点击帮助文档使用说明,就可以得到该视图的帮助内容。
2) 进度显示栏:由进度条和状态显示栏两个部分组成,进度条显示文件加密进度状态,状态显示栏显示,系统提示的一些信息,比如说输入密码与确认密码有误请重新输入等。
3) 视图的主体部分包含多个视图:DES加密文件,AES加密解密文件,DES解密文件,RSA加密信息等视图,用来处理信息加密解密等。
5.系统运行,如下图所示:
二.系统概述
随着Internet的快速发展,在Internet上信息传输,存储的安全问题成为影响Internet应用发展的重要因素。密码算法的理论与实现研究是信息安全研究的基础,确保数据加密算法实现的可靠性和安全性对算法理论应到各种安全产品中起到了至关重要的作用。
RSA密码体制是目前为止最成功的非对称密码算法。它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。虽然其安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。
DES算法,是一种用56位密钥来加密64位数据的方法,它被应用于许多需要安全加密的场合。目前、DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的 PIN的加密传输,IC卡与 POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。DES密码体制的安全性不依赖于算法的保密,其安全性仅以加密密钥的保密为基础实现经济,运行有效,并且适用于多种完全不同的应用。到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法,所以DES算法具有较高安全性。
AES成为新的对称数据加密标准从1997年开始研究到现在已经有10年了,作为新一代的对称数据加密标,AES相对前一代数据加密标准DES具有更高效的执行效率和更好的安全性。虽然AES产品取代DES产品已是必然,但实用的AES的产品还是很有限,不像DES那样应用广泛。这使得对AES的实现和应进行探讨和研究就具有较大的理论和现实意义。
考虑到,当前网络应用的主要开发语言为Java语言,特别是Internet应用的主流平台,本人在:
Java开发平台:JDK1.6,
IDE工具:Eclipse3.2
操作系统:Windows XP SP2
平台上提出基于Java语言的RSA,DES,AES算法的实现方案。并在此基础上,使用当前java最流行的开发富客户端的技术(Eclipse RCP技术)实现一个能对文件、字符串加密的加密系统。
三.信息加密系统研究的内容
1. 分组数据加密算法的设计原则和AES算法的数学基础
分组数据加密算法的设计有两个原则:安全性原则,易实现性原则。AES算法的实现需要的数学基础.
2.AES算法中轮变换的实现
轮变换过程是AES算法的核心。AES算法的轮变换过程由S盒字节替换,行移位,列混合和密钥加层四个步骤构成,在这四个步骤中包含了一些复杂的运算,如对矩阵的求逆和乘法运算,而对于java实现这些复杂运算是不容易的。
3.基于Java的AES算法实现和应用
基于Java的AES算法实现可以方便的为大量Internet应用提供数据加密服务,本设计了一个实现AES算法的Java类,通过类中所提供的接口可以方便利用AES算法对以字节为单位的二进制数据进行加密。在对文件加密/解密的同时,还对其加密/解密进行计时处理,以观察算法的性能。
4.基于Java的DES算法实现
为了研究java在安全性方面的内容,和揭示其实现算法的方便性。在介绍了DES基本原理,与算法过程描述之后,我将通过java所提供的安全包的内容,实现DES算法。
5.基于Java的RSA算法实现
RSA公钥密码体制,利用了数论领域的一个事实,那就是虽然把两个大质数相乘生成一个合数是件十分容易的事情,但要把一个合数分解为两个质数却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难题,至今没有任何高效的分解方法。
在RSA的实现过程,我们要关注两点,一是大数,二是大数为质数。处理好这两点,RSA实现就接近成功。非常幸运的是,Java提供了BigInteger类,就是为处理64位以上大整数而产生的,同时其提供了一些方便的数学运算公式和判定能非常容易的解决RSA运算问题。