摘 要
随着
计算机网络及
通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的
问题之一,密码技术是保证信息安全的核心技术。本文用JAVA语言开发了一个基于Misty1算法的加密
软件,该软件能对文件进行加密和解密。在具体实现时,首先分析了Misty1算法的基本结构,
设计出相应的实施方法,正确实现了该算法,其次,设计了一个图形用户界面,最后对软件进行了测试,验证了实现方法的正确性。
关键词:Misty1;
Java;加密;解密
目 录
论文总页数:24页
1 引言 1
1.1 课题背景 1
1.2 国内外研究现状 1
1.3 本课题研究的意义 2
1.4 本课题的研究方法 3
2 MISTY1算法描述 3
2.1 秘钥产生部分 3
2.2 数据随机化部分 4
2.3 函数描述 4
2.3.1 FI函数 4
2.3.2 FO函数 5
2.3.3 FL函数 7
2.3.4 FL-1函数 8
3 MISTY1加密软件 9
3.1
工作环境介绍 9
3.2 JAVA及
程序编辑工具介绍 9
3.2.1 Java介绍 9
3.2.2 程序编辑工具介绍 10
3.3 MISTY1算法应用于文件加密的分析 12
3.4 MISTY1算法的实现 13
3.4.1 加密 13
3.4.2 解密 15
3.5 设计流程图、图形界面及事件处理 18
3.5.1 加密/解密流程图 18
3.5.2 图形界面 18
3.5.3 处理按钮事件 20
4 程序
演示 21
4.1 程序演示 21
4.2 结果及存在的问题 21
结 论 22
参考文献 22
致 谢 23
声 明 24
1.1 函数描述
2.3.1 FI函数
FI函数将16位输入分为两部分L0和R0(图2-2)
图2-2 FI函数
2.3.2 FO函数
FO函数将32位的输入X32分为两个16位的L0和R0(图2-3)
图2-3 FO函数
图3-1 程序编辑工具UltraEdit
图3-2 好用的功能
图3-3 DOS命令执行后界面
图3-1 加密
其
图3-2 解密
解密部分代码:
public void Decrypt(char ctext[],char userkey[],char ptext[])
{
long L0,L1,L2,L3,L4,L5,L6,L7,L8,L9,
long R0,R1,R2,R3,R4,R5,R6,R7,R8,R9;
KeySchedule(userkey);
//反顺序轮回,解密
L9=(((long)ctext[0])<<24)+(((long)ctext[1])<<16)+(((long)ctext[2])<<8)+((long)ctext[3]);
R9=(((long)ctext[4])<<24)+(((long)ctext[5])<<16)+(((long)ctext[6])<<8)+((long)ctext[7]);
R8=FLINV(L9,KL[9]);
L8=FO(R8,28,21)^FLINV(R9,KL[8]);
R7=L8;
L7=FO(R7,24,18)^R8;
R6=FLINV(L7,KL[7]);
L6=FO(R6,20,15)^FLINV(R7,KL[6]);
R5=L6;
L5=FO(R5,16,12)^R6;
R4=FLINV(L5,KL[5]);
L4=FO(R4,12,9)^FLINV(R5,KL[4]);
R3=L4;
L3=FO(R3,8,6)^R4;
R2=FLINV(L3,KL[3]);
L2=FO(R2,4,3)^FLINV(R3,KL[2]);
R1=L2;
L1=FO(R1,0,0)^R2;
R0=FLINV(L1,KL[1]);
L0=FLINV(R1,KL[0]); //最后一轮
ptext[0]=(char)((L0>>24)&0XFF);
ptext[1]=(char)((L0>>16)&0XFF);
ptext[2]=(char)((L0>>8)&0XFF);
ptext[3]=(char)(L0&0XFF);
ptext[4]=(char)((R0>>24)&0XFF);
ptext[5]=(char)((R0>>16)&0XFF);
ptext[6]=(char)((R0>>8)&0XFF);
ptext[7]=(char)(R0&0XFF);
}
1.2 设计流程图、图形界面及事件处理
3.5.1 加密/解密流程图
图3-3 设计流程图
3.5.2 图形界面
Java中有2个重要且
常用的容器(Container),一个是Frame,另一个是Panal。本设计的图形界面使用的是Frame。为了使界面一目了然,不至于混淆,往容器添加AWT元件时就需要按一定的
方案。Java特别设计了Laout这个机制来解决元件版面配置的问题。Java.awt包中总工提供了五个基本的Layout类,本设计使用的是GridLayout。
图3-4 图形界面
图形界面部分代码:
f = new Frame("Misty1算法");
b1 = new Button("加密");
b2 = new Button("解密");
b1.addActionListener(this);
b2.addActionListener(this);
t1 = new TextField("",20);
t2 = new TextField("",20);
t3 = ne