




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于基于 Misty1Misty1 算法的加密软件(算法的加密软件(JavaJava)的实现)的实现 摘摘 要要 随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决 的最重要的问题之一,密码技术是保证信息安全的核心技术。本文用 JAVA 语 言开发了一个基于 Misty1 算法的加密软件,该软件能对文件进行加密和解密。 在具体实现时,首先分析了 Misty1 算法的基本结构,设计出相应的实施方法, 正确实现了该算法,其次,设计了一个图形用户界面,最后对软件进行了测试, 验证了实现方法的正确性。 关键词关键词:Misty1;Java;加密;解密 The Implementation of Encryption Software (Java) Based on Misty1 Algorithm Abstract With the rapid development of computer networks technology and communication technology, Information security has become one of the most important problems urgent to resolve in information society, Cryptographic technology is the core technology to guarantee information security. In this paper, the software of encryption based on Misty1 algorithm is developed by using JAVA language. It can encrypt and decrypt a file. During the process of implementation, the basic structure of the algorithm is analyzed first and the counterpart method is designed, secondly, a GUI is designed, finally, the software is tested, the result shows that method of implementation is right. Key words: Misty1; Java ; Encryption; Decrypt 目目 录录 论文总页数:24 页 1引言1 1.1课题背景1 1.2国内外研究现状1 1.3本课题研究的意义2 1.4本课题的研究方法3 2MISTY1 算法描述.3 2.1秘钥产生部分3 2.2数据随机化部分4 2.3函数描述4 2.3.1FI 函数.4 2.3.2FO 函数.5 2.3.3FL 函数.7 2.3.4FL-1函数8 3MISTY1 加密软件的设计与实现.9 3.1工作环境介绍9 3.2JAVA及程序编辑工具介绍9 3.2.1Java 介绍.9 3.2.2程序编辑工具介绍10 3.3MISTY1 算法应用于文件加密的分析12 3.4MISTY1 算法的实现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 页 共 24 页 1 1 引言引言 1.11.1 课题背景课题背景 现代密码学是一门迅速发展的应用科学。随着因特网的迅速普及,人们依 靠它传送大量的信息,但是这些信息在网络上的传输都是公开的。因此,对于 关系到个人利益的信息必须经过加密之后才可以在网上传送,这将离不开现代 密码技术。 Misty1 算法是在 1996 年公布的,它是一个分组密码算法,密钥长度是 128 位,明文长度是 64 位。它是由在三菱工作的 Eisaku Takeda 提交给 NESSIE。MISTY1 可以在资源紧张的环境下实现。整个算法是由递归等组成,每 一个层次的结构又一稳妥的 Feistel 结构。MISTY1 是一迭代密码可以迭代超过 8 轮,或者更普遍,迭代 4 回。它用 128 位密钥对 64 位数据进行不确定轮回的 加密。它采用了两个 S -盒,一个 7 7 S-盒,s7 ,一个 9 9 S-盒, s9。它取得了良好的良好的阻力线和鉴别攻击,而且还使能实行以相对较少的逻 辑组件中执行函数的程度相对较低。 1.21.2 国内外研究现状国内外研究现状 随着我国对计算机的普及,计算机和通信技术已经在我国得到了广泛发展 及应用,从而使我们对信息的安全存储、安全处理和安全传输的需要越来越迫 切。特别在 Internet 的应用中,以及个人通信、个人电子身份证、办公自动化, 电子邮件、电子自动转帐支付系统和自动零售业务网的建立与实现,信息的安 全保护问题已经显得十分突出,而能够解决这一问题的一个有效手段就是使用 现代密码技术。 美国早在 1977 年就制定了本国的数据加密标准,即 DES。随着 DES 的出现, 人们对分组密码展开了深入的研究和讨论,已有大量的分组密码,如 DES 的各 种变形、IDEA 算法、SAFER 系列算法、RC 系列算法、Skipjack 算法、FEAL 系 列算法、REDOC 系列算法、CAST 系列算法 Khufu, KhafreMMB, 3-WAY, TEA, Blowfish,GOST,SQUARE,MISTY,Rijndael 算法和 AES15 种候选算法(第一轮) , 另有 NESSIE17 种候选算法(第一轮)等。 目前分组密码所采用的整体结构可分为 Feistel 结构(例如 CAST 256、DEAL、DFC、E2 等)、SP 网络(例如 Safer+、Serpent 等)及其他密码结 构(例如 Frog 和 HPC)。加解密相似是 Feistel 型密码的一个实现优点,但它 在密码的扩散似乎有些慢,例如需要两轮才能改变输入的每一个比特。SP 的网 络结构非常清晰,S 一般被称为混淆层,主要起混淆作用。P 一般被称为扩散层, 主要起扩散作用。在明确 S 和 P 的某些密码指标后,设计者能估计 SP 型密码抵 第 2 页 共 24 页 抗差分密码分析和线性密码分析的能力。SP 网络和 Feistel 网络相比,可以得 到更快速的扩散,但是 SP 密码的加/解密通常不相似。 目前对分组密码安全的讨论主要包括差分密码分析、线性密码分析和强力 攻击等。从理论上讲,差分密码分析和线性密码分析是目前攻击分组密码的最 有效的方法,而从实际上说,强力攻击是攻击分组密码最可靠的方法。到目前 为止,已有大量文献讨论各种分组密码的安全性,同时推出了譬如截断差分分 析、非线性密码分析及插值攻击等多种分析方法。自 AES 候选算法公布以后, 国内外许多专家学者都致力于候选算法的安全分析,预计将会推出一些新的攻 击方法,这无疑将进一步推动分组密码的发展。 1.31.3 本课题研究的意义本课题研究的意义 标准化是工业社会的一个基本概念,它意味着生产规模化、降低成本、方 便维修和更换为了实现非相关团体之间的保密通信,加密体制的标准化是必要 的。分组密码由于其固有特点,已经成为标准化进程的首选体制。 信息安全的最大特点之一是自主性,因而其核心技术密码学的研究与 开发应当是一种本土性的科学。对于有些产品,可以通过外方引进来解决由于 技术落后而带来的问题。然而对于安全产品,除非能完全确信它在硬件和软件 上没有陷门,否则,贸然使用可能带来不可预测的后果。而要做到软硬件上的 确认通常是十分困难的。因此,最明智的方法是依靠自己的力量并汲取现有的 先进经验进行研究、设计和开发。 为了维护通信安全、打击犯罪,1993 年 4 月,美国政府宣布了一项新的建 议,该建议倡导联邦政府和工业界使用新的具有密钥托管功能的联邦加密标准。 该建议称为托管加密标准(escrowed encrytion standard,EES),又称 C1ipper 建议。其目的是为用户提供更好的安全通信方式,同时允许政府机构 在必要情况下进行监听。EES 系统中嵌入了分组加密算法 Sk -ipjack,尽管目 前对该系统和算法有许多争议,但从维护国家通信安全的角度,这项建议是有 积极意义的。 在区域通信系统中,用户较多,他们的地位、作用都不相同,所流通的信 息的重要性也不可能完全相同,因此他们要求得到的安全保护等级也不应该相 同。由此可见,研究多安全级密码算法非常必要。迭代分组密码(所谓选代分组 密码就是以迭代一个简单的轮函数为基础的密码,即通过选择某个较简单的密 码变换,在密钥控制下以迭代方式多次利用它进行加密变换,例如 Feistel 型 密码就是一种选代密码,是分组密码的典型代表,其数学思想简单而灵巧。特 别是在相同的轮函数之下,迭代次数的不同即代表了安全强度的不同级别。 在 InternetIntranet 中随着通信量和业务种类的增加,对安全认证和保 第 3 页 共 24 页 密业务的需求日益迫切。比如,PGP(Pretty Good Privacy)就是一种广泛应用 于 Internet 中 E-mail 系统的一种安全技术方案,它也可以用于其他网络中。 PGP 的安全业务包括机密性、认证性、不可抵赖性等,其中的机密性就是利用 分组密码算法 IDEA 来保证的。另外,分组密码的工作模式可提供一些人们所需 要的其他密码技术,比如流密码技术和杂凑技术等。 1.41.4 本课题的研究方法本课题的研究方法 研究相关资料,理解 Misty1 算法的原理,并参考学习使用其他编程语言编 写的基于此算法的加密软件的代码。深入学习 Java 编程语言,熟悉其编写程序 的流程。然后尝试用 Java 来实现 Misty1 算法,能对数据进行加密和解密。对 程序进行测试,对测试结果进行分析研究,进而对程序进行改进,对关键算法 代码进行尽可能的优化,最终得到一个在 windows 运行的可以用指定密钥对文 件进行 MISTY1 加密并可解密的完整应用程序。 2 2 Misty1Misty1 算法描述算法描述 MISTY1 算法是用 128 位密钥对 64 位数据进行不确定轮回的加密。它在设 计时就采用了经证实可以抵抗密码微分分析和线形分析的安全理论,而且它实 现了在硬件环境和软件环境下都比较高的加密速度。算法可以分为两部分,一 部分是密钥的产生部分,另一部分是数据随机化部分。密钥产生部分根据 128 位的输入密钥,产生 128 位的扩展密钥。数据随机化部分输入 64 位的数据进行 混合,也就是所谓的加密。 2.12.1 秘钥产生部分秘钥产生部分 K 为输入密钥,K为扩展密钥,K 和 K都是 128 位,扩展密钥是由函数 FI 从 K,1,. K,8中产生,并存储在 K,9,., K,16中。Ki代表 K 的一个元素, 1i8,每个的长度为 16 位;然后 Ki被认为作输入到 FI,Ki+1作为 FI 模的密 钥。FI 模的输出是 16 位的 K,i, 1i8,K9=K1(图 2-1) 图2-1 密钥产生 第 4 页 共 24 页 K=K1K2K3K4K5K6K7K8 for i=1 to 8 do K,i=FI(Ki,Ki+1) K,= K,1K,2K,3K,4K,5K,6K,7K,8 2.22.2 数据随机化部分数据随机化部分 数据随机化部分使用了两种函数,FO 和 FL,函数 FO 调用函数 FI。密钥扩 展部分也使用函数 FI。FI 函数使用两个 S 盒,S7 和 S9。 2.32.3 函数描述函数描述 2.3.12.3.1 FIFI 函数函数 FI 函数将 16 位输入分为两部分 L0和 R0(图 2-2) 图 2-2 FI 函数 FI 的输入为: X16= L0R0 KIij=KIijLKIijR FI 则定义为: R1=S9L0(00bR0) L1=R0 R2=S7L1 (truncate(R1)KIijL 第 5 页 共 24 页 R3=S9L2 (00bR2) L3=R2 Y16=L3R3 FI 函数程序代码: public int FI(int x,int KI)/FI 函数 int L1,L2,L3,R1,R2,R3; R1=S9(x7) L1=x R2=S7L1(R1 L2=R1(KI R3=S9L2R2; L3=R2; return (L316) L1=(int)(x R2=FI(L1KO1),KI1)R1; L2=R1; R3=FI(L2KO2),KI2)R2; L3=R2KO3; return (long)L3)16;XR=x KL=key16;KR=key YR=(XLYL=(YR|KR)XL; return (YL16;YR=y KL=key16;KR=key XL=(YR|KR)YL;XR=(XL return (XL24) ctext1=(char)(L916) ctext2=(char)(L98) ctext3=(char)(L9 ctext4=(char)(R924) ctext5=(char)(R916) ctext6=(char)(R98) ctext7=(char)(R9 3.4.23.4.2 解密解密 解密函数运行与加密运行完全相同,只需要改变两项: (1)FL-1函数取代所有的 FL 函数; (2)命令中的子密钥的应用都扭转。(图 3-2) 第 16 页 共 24 页 图 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)ctext0)24) ptext1=(char)(L016) ptext2=(char)(L08) ptext3=(char)(L0 ptext4=(char)(R024) ptext5=(char)(R016) ptext6=(char)(R08) ptext7=(char)(R0 第 18 页 共 24 页 3.53.5 设计流程图、图形界面及事件处理设计流程图、图形界面及事件处理 3.5.13.5.1 加密加密/解密流程图解密流程图 在相应文本框中输入明文/密文 输入密钥 点击“加密”/“加密”按钮 从文本框中读取明文/密文,转 换为 char 类型传入相应数组 调用加密/解密函数 将结果转换为字符串类 型输出到相应文本框 引发按钮事件 图 3-3 设计流程图 3.5.23.5.2图形界面图形界面 Java 中有 2 个重要且常用的容器(Container) ,一个是 Frame,另一个是 Panal。本设计的图形界面使用的是 Frame。为了使界面一目了然,不至于混淆, 往容器添加 AWT 元件时就需要按一定的方案。Java 特别设计了 Laout 这个机制 来解决元件版面配置的问题。Java.awt 包中总工提供了五个基本的 Layout 类, 本设计使用的是 GridLayout。 第 19 页 共 24 页 图 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 = new TextField(“,20); t4 = new TextField(“,20); Label k1,k2,k3,k4,k5,k6; k1 = new Label(“明文(8 字节)“); k2 = new Label(“密钥(16 字节)“); k3 = new Label(“密文(8 字节)“); k4 = new Label(“解密后的明文(8 字节)“); k5 = new Label(“); k6 = new Label(“); f.setLayout(new GridLayout(4,3); f.add(k1); f.add(t1); f.add(k5); f.add(k2); f.add(t2); f.add(b1); f.add(k3); f.add(t3); f.add(b2); 第 20 页 共 24 页 f.add(k4); f.add(t4); f.add(k6); f.pack(); f.setVisible(true); 3.5.33.5.3 处理按钮事件处理按钮事件 当用户单击按钮时就发生一个事件。对于按钮这个事件源,它有一个事件, 就是单击按钮。这个事件源获得监视器的方法是:addActionListener()。 处理该事件的接口是 ActionListener,接口中的方法是 actionPerformer(ActionEvent e)。单击按钮事件的类型是 ActionEvent 类型, 即当用户单击按钮后,Java 包 java.awt.envent 中的类 ActionEvent 自动创建 了一个事件对象。 在用户单击按钮后,将用户在文本框中输入的字符串数据转换为数组数据, 传入程序对应的数组,然后程序调用函数进行运算,最后把得出的结果转换为 字符串数据,输出到指定文本框位置。 按钮事件处理部分代码: public void actionPerformed(ActionEvent e)/接口实现方法 函数 hxdx = new 函数();/产生函数对象 if(e.getSource()=b1) char plaintext1 = (t1.getText().toCharArray(); char key = (t2.getText().toCharArray(); char ciphertext1 = new char8; hxdx.Encrypt(plaintext1,key,ciphertext1); t3.setText(String.valueOf(ciphertext1); else if(e.getSource()=b2) char key = (t2.getText().toCharArray(); char ciphertext1 = (t3.getText().toCharArray(); char plaintext1 = new char8; hxdx.Decrypt(ciphertext1,key,plaintext1); 第 21 页 共 24 页 t4.setText(String.valueOf(plaintext1); 4 4 程序演示程序演示 4.14.1程序演示程序演示 图 4-1 DOS 下运行的情况 图 4-2 图形界面 加密 图 4-3 图形界面 解密 4.24.2结果及存在的问题结果及存在的问题 目前完成了对 Misty1 算法的代码编写,能够实现用指定密钥对输入数据进 行加密并能够解密。但这只是基本工作,还有一些功能有待完善和实现。主要 有以下几个方面: 第 22 页 共 24 页 (1)暂时无法实现对文本文档载入进行加密;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 漆器金银漆雕刻嵌银工艺考核试卷及答案
- 磷肥酸沉槽工艺考核试卷及答案
- 微电子制造工艺规范考核试卷及答案
- 金属材碱洗工标准化作业考核试卷及答案
- 电线电缆金属导体挤制工质量管控考核试卷及答案
- 2024新版2025秋青岛版科学六三制三年级上册教学课件:第四单元 第17课 水蒸发
- AI智能智慧教育综合解决方案
- 影像技术防护考试题及答案
- 气象观测业务测试卷附答案
- 银行征信试题及答案
- 酒店卫生应急预案
- 幼儿教育中彝族元素的使用
- 2025年度在线教育平台股东出资合同
- 慢性鼻窦炎鼻息肉护理查房
- 教学课件-电子商务法律法规(王庆春)
- 2024考研数二真题及答案
- 餐饮业合伙人入股协议书
- 《智能网联汽车智能传感器测试与装调》电子教案
- 2024年江苏省淮安市中考语文试题卷(含答案解析)
- 2第二章-微生物生态学研究方法
- 膝关节穿刺术课件
评论
0/150
提交评论