架构师

您现在的位置是:首页 > 免费源码 > 毕业设计

毕业设计

Java基于Misty1算法加密的设计与实现

架构师小跟班 2020-05-09 毕业设计
资源内容:1、源码2、毕设文档详细内容:基于Misty1算法的加密软件(Java)的实现摘 要随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的问题之一,密码技

资源内容:

1、源码

2、毕设文档

详细内容:

基于Misty1算法的加密软件(Java)的实现

摘  要

随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的问题之一,密码技术是保证信息安全的核心技术。本文用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引言

1.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.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型密码抵抗差分密码分析和线性密码分析的能力。SP网络和Feistel网络相比,可以得到更快速的扩散,但是SP密码的加/解密通常不相似。

目前对分组密码安全的讨论主要包括差分密码分析、线性密码分析和强力攻击等。从理论上讲,差分密码分析和线性密码分析是目前攻击分组密码的最有效的方法,而从实际上说,强力攻击是攻击分组密码最可靠的方法。到目前为止,已有大量文献讨论各种分组密码的安全性,同时推出了譬如截断差分分析、非线性密码分析及插值攻击等多种分析方法。自AES候选算法公布以后,国内外许多专家学者都致力于候选算法的安全分析,预计将会推出一些新的攻击方法,这无疑将进一步推动分组密码的发展。

1.3本课题研究的意义

标准化是工业社会的一个基本概念,它意味着生产规模化、降低成本、方便维修和更换为了实现非相关团体之间的保密通信,加密体制的标准化是必要的。分组密码由于其固有特点,已经成为标准化进程的首选体制。

信息安全的最大特点之一是自主性,因而其核心技术——密码学的研究与开发应当是一种本土性的科学。对于有些产品,可以通过外方引进来解决由于技术落后而带来的问题。然而对于安全产品,除非能完全确信它在硬件和软件上没有陷门,否则,贸然使用可能带来不可预测的后果。而要做到软硬件上的确认通常是十分困难的。因此,最明智的方法是依靠自己的力量并汲取现有的先进经验进行研究、设计和开发。

为了维护通信安全、打击犯罪,1993年4月,美国政府宣布了一项新的建议,该建议倡导联邦政府和工业界使用新的具有密钥托管功能的联邦加密标准。该建议称为托管加密标准(escrowed encrytion standard,EES),又称C1ipper建议。其目的是为用户提供更好的安全通信方式,同时允许政府机构在必要情况下进行监听。EES系统中嵌入了分组加密算法Sk -ipjack,尽管目前对该系统和算法有许多争议,但从维护国家通信安全的角度,这项建议是有积极意义的。

在区域通信系统中,用户较多,他们的地位、作用都不相同,所流通的信息的重要性也不可能完全相同,因此他们要求得到的安全保护等级也不应该相同。由此可见,研究多安全级密码算法非常必要。迭代分组密码(所谓选代分组密码就是以迭代一个简单的轮函数为基础的密码,即通过选择某个较简单的密码变换,在密钥控制下以迭代方式多次利用它进行加密变换,例如Feistel型密码就是一种选代密码,是分组密码的典型代表,其数学思想简单而灵巧。特别是在相同的轮函数之下,迭代次数的不同即代表了安全强度的不同级别。

在Internet/Intranet中随着通信量和业务种类的增加,对安全认证和保密业务的需求日益迫切。比如,PGP(Pretty Good Privacy)就是一种广泛应用于Internet中E-mail系统的一种安全技术方案,它也可以用于其他网络中。PGP的安全业务包括机密性、认证性、不可抵赖性等,其中的机密性就是利用分组密码算法IDEA来保证的。另外,分组密码的工作模式可提供一些人们所需要的其他密码技术,比如流密码技术和杂凑技术等。

1.4本课题的研究方法

研究相关资料,理解Misty1算法的原理,并参考学习使用其他编程语言编写的基于此算法的加密软件的代码。深入学习Java编程语言,熟悉其编写程序的流程。然后尝试用Java来实现Misty1算法,能对数据进行加密和解密。对程序进行测试,对测试结果进行分析研究,进而对程序进行改进,对关键算法代码进行尽可能的优化,最终得到一个在windows运行的可以用指定密钥对文件进行MISTY1加密并可解密的完整应用程序。

2Misty1算法描述

MISTY1算法是用128位密钥对64位数据进行不确定轮回的加密。它在设计时就采用了经证实可以抵抗密码微分分析和线形分析的安全理论,而且它实现了在硬件环境和软件环境下都比较高的加密速度。算法可以分为两部分,一部分是密钥的产生部分,另一部分是数据随机化部分。密钥产生部分根据128位的输入密钥,产生128位的扩展密钥。数据随机化部分输入64位的数据进行混合,也就是所谓的加密。

2.1秘钥产生部分

K为输入密钥,K’为扩展密钥,K和K’都是128位,扩展密钥是由函数FI从K,1,... K,8中产生,并存储在K,9,..., K,16中。Ki代表K的一个元素,1≤i≤8,每个的长度为16位;然后Ki被认为作输入到FI,Ki+1作为FI模的密钥。FI模的输出是16位的K,i, 1≤i≤8,K9=K1(图2-1)

图2-1 密钥产生

K=K1‖K2‖K3‖K4‖K5‖K6‖K7‖K8

for i=1 to 8 do

K,i=FI(Ki,Ki+1)

K,= K,1‖K,2‖K,3‖K,4‖K,5‖K,6‖K,7‖K,8

2.2数据随机化部分

数据随机化部分使用了两种函数,FO和FL,函数FO调用函数FI。密钥扩展部分也使用函数FI。FI函数使用两个S盒,S7和S9。

2.3函数描述

2.3.1FI函数

FI函数将16位输入分为两部分L0和R0(图2-2)

图2-2 FI函数

FI的输入为:

X16= L0‖R0

KIij=KIijL‖KIijR

FI则定义为:

R1=S9[L0]∧(00b‖R0)

L1=R0

R2=S7[L1] ∧(truncate(R1))KIijL

R3=S9[L2] ∧(00b‖R2)

L3=R2

Y16=L3‖R3


FI函数程序代码:

public int FI(int x,int KI)//FI函数

  {

    int L1,L2,L3,R1,R2,R3;

  R1=S9[((x>>7)&0x1FF)]^(x&0x007F);

  L1=x&0x7F;

  R2=S7[L1]^(R1&0x7F)^((KI>>9)&0x7F);

  L2=R1^(KI&0x1FF);

  R3=S9[L2]^R2;

  L3=R2;

  return (L3<<9)|R3;

  }

百度网盘链接:

链接:https://pan.baidu.com/s/19M6XLIYN1IppqWJ-84k0kw 

提取码:wb2u


文章评论