学生学号
实验课成绩
武汉理工大学
学 生 实 验 报 告 书
实验课程名称 信息安全
开 课 学 院 计算机科学与技术学院
指导老师姓名
学 生 姓 名
学生专业班级
2011 — 2012 学年 第 二 学期
实验课程名称: 信息安全
实验项目名称
DES 对称分组密码系统的 Java 实现
实验成绩
实验者
专业班级
组别
同组者
实验日期
12年6月18日
第一部分:实验分析与设计(可加页)
实验内容描述(问题域描述)
原理:
(1)分组密码的加密方式是:首先将明文序列以固定长度进行分组,每组明文用相同的密钥和算法进行变换,得到一组密文。分组密码是以块为单位,在密钥的控制下进行一系列线性和非线性变换而得到密文的。
(2)分组密码的加/解密运算是:输出块中的每一位是由输入块的每一位和密钥的每一位共同决定。
(3)加密算法中重复地使用替代和移位两种基本的加密变换,此即Shannon 1949年发现的隐藏信息的两种技术:混淆和扩散。
混淆:就是改变数据块,使输出位与输入位之间没有明显的统计关系(替代);
扩散:就是通过密钥位转移到密文的其它位上(移位)。
(4)分组密码的特点:良好的扩散性;对插入信息的敏感性,较强的适应性;加/解密速度慢;差错的扩散和传播。
要求:DES 对称分组密码系统的 Java 实现。
实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
import .*;
import .*;
import .*;
class DES01 {
private String strkey;
private SecretKey skey=null;
private String[] algo=
{"DES/ECB/PKCS5Padding","DES/ECB/NoPadding","DES"};
public DES01(String key)
{
strkey=key;
}
public void keyGenerating() throws Exception
{
byte[] bkey=();
KeySpec ks = new DESKeySpec(bkey);
SecretKeyFactory kf
= ("DES");
skey = (ks);
}
public static void main(String[] a) {
DES01 des = new DES01("IAMASTUDENT");
("STUDENTWANGFENGLIMING");
}
public byte[] Encripting(String plaintext,int i)
throws Exception
{
byte[] bpt=();
Cipher cf = (algo[i]);
if(skey==null)();
(,skey);
byte[] bct = (bpt);
return bct;
}
public byte[] decripting(byte[] bct,int i)
throws Exception
{
Cipher cf = (algo[i]);
if(skey==null)();
(,skey);
byte[] bpt = (bct);
return bpt;
}
public void test01(String mess)
{
try{
byte[] ct=(mess,0);
byte[] pt=(ct,0);
String p
信息安全实验报告 来自淘豆网m.daumloan.com转载请标明出处.