Java实现3DES加解密算法

本文介绍了一种基于3DES算法的文件加解密软件的设计与实现过程,包括算法原理、实现步骤与用户界面设计等内容。

信息安全课程实验报告

Java源代码

1.实验目的

1.1实验要求

1.编程实现DES加密和解密算法,并使用DES加解密算法实现3DES加解密算法
2.选择一种填充方式,对需要加密的文件进行填充(解密要去掉填充部分)。
3.DES的加解密的工作模式,采用密码分组链接(CBC)模式
4.读取/写入被加密/解密文件时,采用字节流的形式进行文件读取/写入
5.完成实验后,需要交实验报告(包括:重要函数的功能分析和流程图)

1.2实验任务

基于3DES加解密算法,编程实现对任意文件实现加解密的小软件。

1.3实验内容

1.掌握DES算法的原理及过程
2.完成DES密钥扩展运算
3.完成DES数据加解密运算
4.基于已经实现的DES模块进一步实现3DES加解密算法
5.对3DES实现最后一个分组填充(本文采用全零填充方式)
6.3DES的加解密的分组工作模式,采用密码分组链接(CBC)模式
7.实现用户UI界面,方便用户使用
8.进行加解密测试,验证代码正确性

2.实验原理以及应用

2.1实验原理

明文M,密文C,密钥k1,k2和k3,加密算法E解密算法D。3DES算法的过程可表示为:加密:C=Ek3(Dk2(Ek1(M))) 即对明文数据进行,加密,解密,加密的顺序过程,最后得到密文数据解密:M=Dk1(Ek2(Dk3©)) 即对密文数据进行,解密,加密,解密的顺序过程,最后得到明文数据。k1可以等于k3,但不能三个密钥均相等(如果相等的话就成了DES算法了,减弱了3DES的安全性)。3DES可以是3DES-CBC,在原来的加密或者解密处增加了异或运算的步骤,用来提高算法的安全性。
3DES使用3个8字节长度(64位二进制)的密钥,即k1,k2,k3,然后进行加密运算和解密运算。3DES(K1≠K2≠K3),在3DES加密时,对加密——解密——加密依次使用密钥1、密钥2、密钥3,在3DES解密时对解密加密解密依次使用密钥3、密钥2、密钥1。由于DES加解密算法是每8个字节作为一个加解密数据块,因此在实现该算法时,需要对数据进行分块和补位操作(即最后不足8字节时,要补足8字节,本文采用全零填充)。 3DES的CBC工作模式:将待处理的数据分组,但是每一组数据在加密或者解密之前都要与前一块的结果做一次异或操作。该模式需要定义一个特殊的8字节初始化向量IV,用于和第一组数据进行异或操作。注意IV参数是对应CBC模式的。这样一来,每一组数据都是有联系的,并且增加了一个随机变量IV更加可以提高算法的安全性。

2.2实验背景

在DES中,初始置换IP和初始逆置换IP-1各使用一次,使用这两个置换的目的是为了把数据彻底打乱重新排列。它们对数据加密所起的作用不大,因为它们与密钥无关且置换关系固定,所以一旦公开,它们对数据的加密便无多大价值。
在DES算法加密过程中除了S盒是非线性变换外,其余变换均为线性变换。因此S盒是DES算法安全的关键。任意改变S盒输入中的一位,其输出至少有两位发生变化。由于在DES中使用了16次送代,所以即使改变明文或密钥中的1位,密文中都会大约有32位发生变化。S盒的设计原则一直没有完全公开。经过多年来的研究,人们的确发现了S盒的许多规律,但至今还没有发现S盒的致命缺陷。
由于DES算法是公开的,因此其安全性完全依赖于所用的密钥(符合柯克霍夫原则,即密码体制的安全性不应依赖加密算法的保密性,而应取决于可随时改变的密钥)。在算法使用过程中,每次迭代时都有一个子密钥供加密使用。子密钥的产生也很有特色,它确保密钥中各位的使用次数基本相等。大量实验表明,56位密钥中每位的使用次数在12次至15次之间。在实际使用中,需要注意的是DES算法存在一些弱密钥。所谓弱密钥是指一个密钥产生的所有子密钥都是相同的,此时对消息加密两次就可以恢复出明文。虽然DES算法有弱密钥现象,但是弱密钥所占比例很小,可以在选取密钥时避开使用,因此对其安全性影响不大。
随着密码分析技术和计算能力的提高DES的安全性受到质疑和威胁。密钥长度较短是DES的一个主要缺陷。DES 的实际密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值