A51加密算法论文_第1页
A51加密算法论文_第2页
A51加密算法论文_第3页
A51加密算法论文_第4页
A51加密算法论文_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、a5/1加密算法的设计与实现design and implementationof a5 / 1 algorithm学 院:专 业 班 级: 学 号:学 生 姓 名: 指 导 教 师: 2014 年 6 月摘 要gsm电话系统属于应用最为广泛的移动通信标准。移动网络是一种共享媒体,任何用户都可以拦截网络来获取自己想知道的媒体信息。当媒体是共享的时候,任何用户都可以在此共享媒体上收听或发送信息。从而使得通信不再是私有的。当媒体是共享的时候,隐私和身份验证都将会丢失,除非利用一些方法来恢复它们。这时,a5/1加密算法提供了相应的方法,来恢复对隐私和身份验证的控制。现阶段,针对a5/1加密算法进行了

2、可抵抗相关攻击的改进的研究。针对算法的漏洞, 提出改进的方法,来增强a5/1加密算法的安全性。由于a5/1加密算法具有硬件实现简单、抗攻击能力强等优点,所以它不仅可以应用在gsm电话系统中,也可以在应用方向上进行推广。例如,在a5/1加密算法改进的基础上,结合雷达网数据通信,实现对雷达网数据保密通信的需要。本论文中,主要是在对信息安全了解的基础上,对a5/1加密算法进行充分的研究,确切的理解算法的每一个步骤。通过程序语言对a5/1加密算法进行实现,在此基础上对算法进行改进。根据对a5/1加密算法已有的理解,对代码进行充分的测试并继续修改,从而优化了算法。基于a5/1加密算法的通信信息加密功能,

3、我将对其进行应用推广,达到实现对文件的加密,保证文件的安全性的目的。最后,为了能够方便灵活的应用a5/1加密算法,我对算法实现了界面化,使得其应用起来简单高效。关键词:gsm;移动通信;a5/1;加密iabstractgsm is most widely used cellular standard. mobile network is the shared media, and any user of the media can intercept the network. when the media are shared, any one can listen to the media,

4、 or any one can transmit on the media. thus communication is no longer private. when media are shared, privacy and authentication are lost unless some method is established to regain it. cryptography provides the mean to regain control over privacy and authentication.at this stage, for a5/1 encrypti

5、on algorithm, there are methods to improvement of a5/1 algorithm against correlation attack. for a5/1 encryption algorithm weakness, proposed improved methods to enhance security of the a5/1 encryption algorithm. because it is of easy hardware implementation and high anti-attack feature. it not only

6、 can be used in gsm telephone system but also can be spread to other direction of application. for example, based upon improving the a5/1 encryption algorithm, concerning the requirement for radar network data communication, it can meet the demand of data encryption communication in radar network.in

7、 this paper, mainly on the basis of understanding of information security, fullyunderstandthepointofviewofthe a5/1 encryption algorithm, understandexa-ctlyeach step of in this algorithm. achieve the a5/1 encryption algorithm through programming language. on this basis, improvement the algorithm, acc

8、ording to understood of the a5/1 encryption algorithm. in order to optimization algorithm, fully testcode, continue to modify and improve code. since the a5/1 encryption algorithm can not only encrypt the communication of information, promotion of its application, encryption of the files to guarante

9、esafety of files. in the end, implementation ofthe interface of the a5/1 encryption algorithm toconvenient to use. it provides an easy and high effective way to operate.keywords: gsm; mobile communication; a5 / 1; encryptioniii目 录摘 要iabstractii第1章 绪论11.1 通信安全的重要性11.2 a5/1加密算法的现状11.3 本论文工作的意义21.4 本论文

10、的主要工作2第2章 a5/1加密算法32.1 通信安全模型32.2 流密码32.3 a5/1加密算法的描述42.4 a5/1加密算法密钥流的产生52.5 a5/1加密算法的线性反馈移位寄存器62.5.1 线性反馈移位寄存器62.5.2 a5/1加密算法的线性反馈移位寄存器92.5.3 基于线性反馈移位寄存器的钟控规则9第3章 a5/1加密算法实现的详细设计113.1 算法函数113.2 算法的详细设计113.2.1 模2运算113.2.2 择多原则133.2.3 lfsr的移位操作143.2.4 带钟控的lfsr操作153.2.5 密钥流的初始化173.2.6 输出位的获取203.2.7 获取

11、密钥流213.2.8 加解密223.2.9 输出16进制形式的明密文23第4章 测试25第5章 加密文件265.1 计数器(ctr)模式265.2 加密文件的详细设计27第6章 a5/1加密算法界面化306.1 界面的功能介绍306.2 流程图306.4 界面效果图33第7章 结论36参 考 文 献37致 谢39附 录40ii第1章 绪论1.1 通信安全的重要性在过去,密码学是军队独家专有的领域,许多国家的安全机构将大量的财力投入到自己的通信中,同时又千方百计地去破解别人的通信。而随着密码学的飞速发展,信息化已成为人类社会发展的大趋势,而且在如今的信息社会中,各个方向的行业都与信息息息相关的。

12、因此,应用密码学去保证信息安全也变得越来越重要1。由于信息技术的发展和越来越广泛的应用,整个社会的运作也越来越密切的依赖于信息技术,依赖于各种信息系统的正常运转。例如国家的政治运动、公司的市场策略、私人的信息数据这些都是秘密的。信息安全问题,关系到国家社会的稳定,企业的兴衰。这不仅得到了政府部门、金融部门重视,而且企业事业单位和个人也越来越重视这一问题。所以,保证信息的安全是信息时代的迫切需要。如何保护信息不被窃取、篡改、破坏等已成为当今社会普遍关注的重大问题之一2。1.2 a5/1加密算法的现状gsm电话系统3是应用最为广泛的通信系统,a5/1加密算法是gsm电话系统中基本的加密算法,用来确

13、保用户传输信息的安全。对于大多数的人来说,手机安全和通话隐私已经成为日常问题。为了防止窃听者能够窃听到用户的通话,在用户通信的gsm手机里采用了一套密码系统和协议来提供身份验证和加密4。加密是在移动通讯中保护用户信息和防止欺诈行为非常重要的技术。gsm电话系统用a5流产生器去加密传送在基站与移动台之间的数字用户数据5。关于a5/1加密算法,它的基本思想是好的,效率非常高。它已知的弱点是寄存器太短不能抗穷举攻击。带有较长的寄存器和稠密反馈多项式的a5/1加密算法的变型是安全的。现在有很多关于a5/1加密算法改进的研究,一般通过对密钥流的产生进行改进。也有根据算法的弱点,研究算法的攻击方法6。这两

14、个方向都促进了a5/1算法的有效性。1.3 本论文工作的意义每个加密算法都有它的优缺点,相比较而言,对称密钥算法要比非对称密钥算法快很多,如果想实现非常高的传输速率,就必须选择对称密钥算法进行加密。a5/1算法是比较优秀的加密算法,我们的工作可以为生活实践提供一种加密工具,用来保护合法重要信息的安全性。1.4 本论文的主要工作本论文的主要工作有:1) 对通信安全的意义和实施办法有初步的了解。2) a5/1加密算法的描述进行充分的理解,精确理解算法的每一个步骤。3) 完成算法的详细设计。4) 能够用java对算法进行编程工作,并尽量考虑程序的优化工作。5) 对代码进行充分的测试,给出相应的测试结

15、果,保证算法的正确性。6) 在算法模块的基础上,再对文件进行加解密。7) 对以上算法进行界面化,使得操作更加方便。第2章 a5/1加密算法2.1 通信安全模型通信安全模型7如图2-1所示,此时通信发送方通过公开信道将消息发送给接收方,我们要保证信息不被攻击者所截获、篡改等时,就涉及到信息安全的问题。首先,要对通信的发送方所发送的消息进行安全转换,如加密、签名等技术,接收方在接收时进行相关的逆变换,如解密、验证签名等。通过以上的工作,经过安全转换的信息即使在公开信道上被窃听者截取到,也不能够直接的看到信息的内容。从而保证了信息的安全。图2-1 通信安全传输模型2.2 流密码流密码8的加密方法是对

16、字符逐位加密。将图2-1中的消息加密为安全消息。它利用秘钥k来产生一个密钥流,用此秘钥流来加密明文串,从而得到相应的密文串,加密方式如公式2-1所示。 (2-1)其中,是密文串,是明文,是加密函数。与分组密码比,流密码的优点是运算速度快9。因此主要应用于对信息时效性要求较高的军事、外交、无线通信等领域。由于独立加密的特点也说明了它是无错误传播的,一个传输错误只影响一个符号,不影响后面的符号10。有以上介绍可知,流密码含有以下几种内容:a) 明文,需要进行安全转换的信息。b) 密文,经过安全转换后的信息。c) 秘钥,用来产生秘钥流的信息。d) 密钥流,参与加解密的控制信息。e) 密钥流生成器,用

17、秘钥产生密钥流的函数方法。f) 加密算法,将明文通过一种规则转换为密文的方法。此时需要密钥流。g) 解密算法,将密文通过一种规则转换为明文的方法。此时需要密钥流。2.3 a5/1加密算法的描述a5/1加密算法11是一种流密码,通过密钥流对明文加密,因此有流密码的优点。初始向量是64比特的会话密钥和22比特的帧序列号。会话秘钥在通话期间被使用,但是帧序列号在通话期间会改变。这样,会生成唯一的 228 bit 密钥流控制两个方向的信道, 每个方向的 114比特密钥流与114比特的明文/密文进行异或运算, 产生114比特密文/明文。加密过程如图2-2所示。图2-2 a5/1加密算法2.4 a5/1加

18、密算法密钥流的产生密钥流的生成12可以21分成三个阶段,第一阶段,3个移位寄存器初始全部设置为,然后在64个周期内,将每个线性反馈移位寄存器都移位64次(不带钟控),每次移位后将密钥ki( i=0, 1, 2,., 63)与每个线性反馈移位寄存器的最低位比特异或;之后,在22个时钟周期内,将每个线性反馈移位寄存器都移位22次(不带钟控),每次移位后将22比特帧序列fi(i=0, 1, 2, ., 21)与每个线性反馈移位寄存器的最低位比特异或;记第一阶段后的内部状态为s1。第二阶段,由状态s1出发,按照钟控规则移位100个周期,与第一阶段不同的是,不进行异或操作,舍弃密钥流。记此时的内部状态为

19、s2。第三阶段:由状态s2出发,按照钟控规则对r1,r2,r3进行移位操作。r1,r2,r3的最高位异或生成228比特的密钥流,应用于加/解密明/密文流。根据2.3 a5/1加密算法的描述和2.4 a5/1加密算法密钥流的产生的内容,可以总结出如图2-3 a5/1加密算法结构图。图2-3 a5/1加密算法结构图2.5 a5/1加密算法的线性反馈移位寄存器2.5.1 线性反馈移位寄存器在流密码中,对于需要加密的一组明文,通过密钥流的控制来加密明文,密钥流的一位加密明文的一位,因此实现了一次一密。这样密钥流就决定了流密码的安全强度。在实际应用中,密钥流是一个伪随机序列(看起来是随机序列,不能够重复

20、产生,实际上只是它的序列周期足够长,长到在实际应用中能够满足在相当长的有限序列内都不是周期性的)。所以,设计一个好的密钥流生成器是至关重要的。下面,详细介绍一种流秘钥生成器-移位线性反馈移位寄存器。移位寄存器序列已经被应用于密码学和编码理论当中。自电子时代开始以来,军事密码学就已经使用基于移位寄存器的序列码。一个反馈寄存器13(feedback shift register)由移位寄存器和反馈函数组成(如图2-4所示)。其中,移位寄存器是一个位序列,位是移位寄存器长度的单位,如果是n位长,则为n-位移位寄存器。每次运算时得到一位,此时,移位寄存器中全部向左移动一位。这样最左端的位被舍去,最右端

21、的位需要更新,根据寄存器中其他位计算得到最右端的位。最后,移位寄存器输出一位,一般为bn的值。图2-4 反馈移位寄存器线性反馈移位寄存器(linear feedback shift register, lfsr)(如图2-5所示)是反馈移位寄存器的一种,反馈函数和寄存器中的某些位进行异或,这些位被称为抽头序列(tap sequence)。 图2-5 线性反馈移位寄存器下面,用4位线性反馈移位寄存器(如图2-6所示)举例说明线性反馈移位寄存器的工作原理:图2-6 4位线性反馈移位寄存器如图2-6可知,抽头位置是第一位和第四位,假设初始值是1111,在输出序列重复之前(输出序列从开始到重复前的长度

22、称为周期),能够产生的状态序列是:1111,1110,1101,1010,0101,1011,0110,1100,1001,0010,0100,1000,0001,0011,0111则输出序列为:111101011001000对于一个n-位线性反馈移位寄存器14有种内部状态(全部是零的状态除外,因为运算结果不能产生别的内部状态),即n-位线性反馈移位寄存器在重复之前,能够产生位长的伪随机序列。而线性反馈移位寄存器能够产生种内部状态是需要某种抽头序列15。为了能够有最大周期的线性反馈移位寄存器,则要求抽头序列加1后的多项式(多项式的阶是移位寄存器的长度)是本原多项式模2(一个n阶本原多项式是不可

23、约多项式,它能够整除,不能整除,d是能够整除)。假设线性反馈移位寄存器的长度是32,抽头位置是在1、2、3、5、7处(抽头从移位寄存器的左边开始计数,即抽头的阶数越低,越靠近移位寄存器的左边)。则通过(32, 7, 5, 3, 2, 1, 0)产生的多项式如公式2-2所示。 (2-2)多项式(2-8)是本原多项式模2,在重复之前,可以循环产生输出序列。2.5.2 a5/1加密算法的线性反馈移位寄存器a5/1有3个长度分别为19,22,23的线性反馈移位寄存器16r1,r2,r3。r1的抽头序列是18、17、16和13,r2的抽头序列是21和20,r3的抽头序列是22、21、20 和7。则它们的

24、生成多项式如公式2-3所示。且线性反馈移位寄存器的多项式均为本原多项式,故由r1,r2,r3产生的序列有最长周期。 (2-3)2.5.3 基于线性反馈移位寄存器的钟控规则a5/1的钟控机制采用择多逻辑17,在每一轮中时钟至少驱动2个lfsr移位。有3个钟控输入(分别为每个线性反馈移位寄存器的中间位,即r18,r210,r310)和3个钟控输出(分别控制每个线性反馈移位寄存器的停/走)。每次移位前计算r18,r210和 r310中数量多的数字。例如个比特为(0, 0, 0),则。择多逻辑真值表18如表2-1所示。表2-1 择多逻辑真值表r18r210r310majl1l2l30000111100

25、0011010010100101100111011101110111011101111111a. maj是指majority(r18, r210, r310)的结果值。b. l1,l2,l3分别表示r1,r2,r3是否移动的布尔值。r1移位当且仅当公式2-4成立时,r2移位当且仅当公式2-5成立时,r3移位当且仅当公式2-6成立时。值相等的线性反馈移位寄存器会被驱动,不相等则不被驱动。移位后r1,r2,r3的异或即得最终密钥流。 (2-4) (2-5) (2-6)带钟控规则的r1,r2,r3的操作过程19可如图2-7所示。图2-7 带钟控规则的lfsr操作图第3章 a5/1加密算法实现的详细设

26、计3.1 算法函数intparity( int p );32位模2运算intmajority();择多原则函数intclockone( int r, int taps, int mask );单个lfsr的移位操作voidclockall();所有lfsr的移位操作voidclockcontrol();带钟控的lfsr的操作状态voidsetkey();密钥流的初始化intgetout();输出位的获取voidgetkey();获取密钥流voidrun();密钥流的产生byteencryption( byte pt );加解密函数voidprinthextext( byte pt, byte

27、ct );输出明文、密文函数3.2 算法的详细设计3.2.1 模2运算关于32位数据二进制位中1的个数是奇数还是偶数,如果是奇数,则返回1,如果是偶数,返回0。在32位中,所有0异或的结果是0,剩下的1中,两两异或为0,所以,当有偶数个1时,异或结果为0,当奇数个1时,异或结果为1。因此是32位相异或的结果。int parity( int p )p = p 16;p = p 8;p = p 4;p = p 2;p = p 1;p &= 1;return p;举例说明函数的操作方法,如图3-1所示。假设32位二进制数p为0101111110100110 1110101100101101。图 3-

28、1 二进制模2运算3.2.2 择多原则首先,来说明如何取得钟控位置的值。以r1为例,取得r18的值(0或1),通过公式3-1取得。 (3-1)其中,r1是寄存器,r1mid是钟控位置。如图3-2获取钟控位置值,以二进制图的方式进行详细的运算。图3-2获取钟控位置值由以上,同理可知r210和r310的值。由表2-1 择多逻辑真值表可知,当r18、r210和r310的和大于等于2时,择多结果值为1,否则为0。因此用和的值来判断最终的结果值,如果和大于等于2,返回结果值1;否则,返回结果值0。可用图3-3择多原则程序流程图表示。图3-3择多原则程序流程图下面是具体择多原则的实现方法。int majo

29、rity()int sum = ( ( r1 & r1mid ) 8 ) + ( ( r2 & r2mid ) 10 ) + ( ( r3 & r3mid ) 10 );/r18+r210+r310求和if( sum = 2 )/如果和大于2return 1;return 0;3.2.3 lfsr的移位操作首先以r1的二进制的形式详细描述具体的移位操作过程,如图3-4 r1寄存器的移位操作。先得到抽头位置的值,再通过parity(int a )来得到抽头位置异或的结果。最后,当寄存器左移一位,最低位通过抽头异或值来更新。图3-4 r1寄存器的移位操作lfsr移位操作的详细设计如下。其中r是移位

30、寄存器,taps是抽头序列,mask是掩码位。int clockone( int r, int taps, int mask )int temp = r&taps;/取得抽头序列的值r = (r 8 ) )/如果钟控值等于r18r1 = clockone( r1, r1taps, r1mask );/r1进行移位操作if( temp = ( ( r2 & r2mid ) 10 ) ) /如果钟控值等于r210r2 = clockone( r2, r2taps, r2mask ); /r2进行移位操作if( temp = ( ( r3 & r3mid ) 10 ) ) /如果钟控值等于r310r

31、3 = clockone( r3, r3taps, r3mask ); /r3进行移位操作3.2.5 密钥流的初始化密钥流的初始化分为三部分,第一部分是64轮的会话密钥与寄存器的操作,第二部分是22轮帧序列与寄存器的操作,第三部分为带钟控的寄存器的操作。流程图如图3-6所示。图3-6密钥流初始化流程图第一部分中,首先是64个周期的寄存器和秘钥之间的运算。秘钥是64比特位,在64周期中,每一周期需要一比特位的秘钥。密钥存储在byte数组中,如图3-7所示。要获得位秘钥,要取得相应byte数组中的某一个数据,并进行移位得到。byte型变量占一个字节,8位。所以,每8个周期从数组中取一个byte型秘

32、钥。通过keyi/8取余的方式获得分秘钥(i代表第i周期)。然后将获取的分秘钥通过右移与1的方法即可获得位秘钥。图3-7中第一行数字表示要想获得相应位的值所需要向右移动的移数,即移位数字。第二行是对应的第几周期。我们通过周期数字对8取余来得到移位数字。能够获得相同结果的二进制计算是周期数字与7进行与运算。图中以8和9来举例说明。图3-7获取位秘钥的方法第一部分中秘钥流产生中的移位寄存器操作在3.2.3中已经介绍。 第二部分中,在22周期中,每次取一位帧号。由于帧号存储在一个int型变量中,相对应位秘钥的获取,位帧号的获取变得简单许多。需要第几位帧号即向右移动几位并和1进行与运算即可。移位寄存器

33、的操作不再赘述。第三部分中,只含有带钟控的移位寄存器的操作,此操作在3.2.4中已经介绍。下面是秘钥流产生的详细设计。void setkey()int i = 0;int keybit = 0;/位秘钥int framebit = 0;/位帧号for( ; i (i&7) ) & 1;/获取位秘钥clockall();/寄存器移位操作/寄存器进行计数r1 = keybit;r2 = keybit;r3 = keybit;for( i = 0; i i ) & 1;/获取位帧号clockall();/寄存器移位操作/寄存器进行计数r1 = framebit;r2 = framebit;r3 =

34、framebit;for( i = 0; i 100; i + )/寄存器的100次周期循环clockcontrol();/带钟控的寄存器移位操作3.2.6 输出位的获取密钥流中的每一位是由r1、r2和r3三个寄存器最高位相异或的结果。通过与运算和parity(int p)方法获取最高位的值,再进行异或。对此方法举例说明,如图3-8所示。图3-8输出位的获取详细设计如下。int getout()int temp = parity( r1&r1out ) parity( r2&r2out ) parity( r3&r3out );return temp;3.2.7 获取密钥流密钥流共228位,分

35、为两部分存储到byte数组中。通过带钟控的移位寄存器操作后获得输出位。输出位从最高位存到最低位。输出位通过左移移动到高位。移动的位数由周期得到,这与3.2.5中获取位秘钥相似。下面是获取密钥流的详细设计。void getkey()int i = 0;for( i = 0; i 114; i + )clockcontrol();keystreamai/8 |= (byte)( getout()( 7 - ( i&7 ) ) ) ;/字节从最高位存for( i = 0; i 114; i + )clockcontrol();keystreambi/8 |= (byte)( getout()( 7

36、- ( i&7 ) ) );3.2.8 加解密如图3-9所示,加密和解密使用同样的方法,明/密文与密钥流进行异或操作后,返回字节数组形式的密/明文。图3-9加解密流程图详细设计如下。byte encryption( byte pt )int i = 0;int len = pt.length;/数组长度=15byte ciphertext = new bytelen;/密文 for( i=0; i len; i + ) ciphertexti = (byte)( ptikeystreamai ); return ciphertext;3.2.9 输出16进制形式的明密文为了能够清晰的了解到加解

37、密前后的明密文,使用16进制的形式输出明密文。void printhextext( byte pt )system.out.println( 加/解密前的明/密文: );for( int i=0; i pt.length; i + ) system.out.print( integer.tohexstring( pti & 0xff )+ , ); byte ct = encryption( pt ); system.out.println( n加/解密后的密/明文: ); for( int i=0; i ct.length; i + ) system.out.print( integer.t

38、ohexstring( cti & 0xff )+ , ); system.out.println( n );第4章 测试测试时20,需要有会话密钥、帧序列号、明/密文,从而输出密/明文。为了获得有效地测试结果,通过控制变量的方法,对其进行测试产生工作秘钥的唯一性和算法的有效性21。即相同的会话密钥、帧序列号,对于不同的明文产生不同的密文;相同的会话密钥、明文,对于不同的帧序列号,将产生不同的密文;相同的帧序列号和明文,对于不同的会话秘钥将产生不同的密文。解密的验证,只需将加密后的密文再进行解密,解密后的明文与原始的明文对比是否相同。测试数据如表4-1所示。表4-1 测试数据会话秘钥帧序列号明

39、文密文6b6579776f72647330397a68656e64656f6d650234efa352a6a6b6579776f726473303965697435392433697a0325b4f674766e6b6579776f726473303971342e2672705b326e5e7fa7bd201e356b6579776f7264733039776f6e646572667568053fe5aa2223726b6579776f7264733039656e6417e3065697a0435a0b160206e574f4e464552465526944153444647484a4bba5

40、6a32ee2da8500574f4e46455246559294153444647484a4bbf366a7551056598574f4e464552465522194153444647484a4baa176497f25f7048574f4e46455246557d44153444647484a4b094017b4572b1051574f4e4645524655bd24153444647484a4beb1a5c57b850b6423f2e4077657239697de6e6968616f6d6162223270f597b521d74241495a554f49557de6e6968616f6d

41、6162159fddb450cfe143574f333924304c3e7de6e6968616f6d6162af96a631a1ff27e677616977656e7a617de6e6968616f6d6162f708246caa2182da53494525334f3b457de6e6968616f6d6162bc9a4d2c8195edb4第5章 加密文件5.1 计数器(ctr)模式计数器模式22是分组密码的工作模式中的一种,首先,将明文分组,每组明文长度相等,然后对每一组进行独立的加密。加密时需要秘钥和计数器对明文加密,加密如图5-1所示。解密时需要相应的秘钥和计数器对密文解密,解密如图

42、5-2所示。图5-1 ctr加密图5-2 ctr解密计数器模式的优点是高效的,由于每组数据不依赖于前面的数据,所以是独立处理的,可以并行实现;加密算法的执行不需要明密文的参与计算。当给出明密文时,只需进行异或操作。这样的加密模式也防止了错误的传播,一个分组单元的损坏只影响对应的单元。由于计数器的关系,对于相同的明文能够加密成不同的密文,因此隐藏了明文的模式信息,这样对与通过语言的频率特征进行攻击变得不可行。5.2 加密文件的详细设计以秘钥为“keywords”,帧号为0x6935对文件a5_1.java进行加密并保存在ciphera5_1.java中。通过文件输入流读取a5_1.java的内容

43、,以byte数组形式得到。通过文件输出流将加密后的内容保存到ciphera5_1.java中。同时对可能产生的异常进行捕捉21。如图5-3所示。图5-3加密文件流程图详细设计如下:import java.io.file;import java.io.fileinputstream;import java.io.fileoutputstream;import java.io.filenotfoundexception;import java.io.ioexception;public class a5_filepublic static void main( string args )int b

44、 = 0;/读入缓冲区的字节总数byte text = new byte15;/保存分组明/密文string key = new string( keywords );/秘钥int frame = 0x6935;/帧序列号a5_1 a = new a5_1( key, frame );/a5_1算法a.run();tryfile file = new file( a5_1.java );/需要加密的文件file copyfile = new file( ciphera5_1.java );/加密后保存的文件fileinputstream fi = new fileinputstream( fi

45、le );/文件输入类fileoutputstream fo = new fileoutputstream( copyfile );/文件输出流copyfile.createnewfile();/创建新文件while( ( b = fi.read( text ) ) != -1 )/如果因为已经到达文件末尾而没有更多的数据,则返回 -1text = a.encryption( text );fo.write( text, 0, b );fi.close();/关闭此文件输入流并释放与此流有关的所有系统资源catch( nullpointerexception npe )system.out.p

46、rintln( 文件名为空 );catch( filenotfoundexception fnfe )system.out.println( 文件未找到 );catch( securityexception se )system.out.println( 拒绝对文件进行读取访问 );catch( ioexception ioe )system.out.println( 发生 i/o 错误 );第6章 a5/1加密算法界面化6.1 界面的功能介绍界面含有两个功能,一个是对字符串的加解密,另一个是对文件的加解密。通过输入秘钥和帧号,即可实行以上功能。在界面输入方面,要对其进行检查。秘钥长度为8个字

47、符,对于不等于8个字符的输入,给出“请输入8位字符的秘钥!”的提示;帧号要求是数字,范围在0到262143(0x3ffff)之间,满足了帧序列号是22位的要求,不在此范围内时,给出“请输入正确范围内的帧号!”的提示,如果输入非数字时,给出“请输入正整数形式的帧号!”的提示;由于a5/1加密算法产生的密钥流是228比特位,一个方向114比特,所以最多可以加密14位字符,如果输入的字符串超过14位,给出“输入需要加/解密的字符串过长!”的提示;加解密字符串时,点击“加/解密字符串”按钮即可,在相应的文本框内会显示出加/解密后的字符串;加解密文件时,点击“加/解密文件”按钮即可,加/解密完成后,会给

48、出加解密完成的提示对话框。如果其中的文件不存在,也给出相应的提示;在加/解密后的内容的存储发生错误,也给出提示。6.2 流程图图6-1加解密字符串流程图表示了通过界面模式进行字符串加密的系统流程图。图6-2加解密文件流程图表示了通过界面模式进行文件加密的系统流程图。图6-1 加解密字符串流程图图6-2 加解密文件流程图6.4 界面效果图图6-3 初始化界面图6-4 秘钥验证警告对话框图6-5 帧号整数验证警告对话框图6-6 帧号整数范围验证警告对话框图6-7 字符串验证警告对话框图6-8 文件加密完成提示对话框第7章 结论本论文对信息安全中的gsm系统进行了简单的介绍,对其中的a5/1加密算法

49、进行了细致的分析,从a5/1的初始化、密钥流的产生至最后的加解密的内容。通过此次毕业设计,锻炼了自己的实践动手能力,从信息安全理论知识,深入到详细的a5/1加密算法的实现,让我对a5/1加密算法有了更深刻的认识。至此,对a5/1加密算法的学习也只是一个初步的过程,本毕业设计只是完成了对字符串和文件的加解密的功能。还有对a5/1加密算法的改进、抗攻击等问题没有了解,因此对a5/1加密算法以及其他信息安全知识的了解还远远不够。在今后的日子中会不断学习,了解更多这方面的内容。参 考 文 献1 王昭. 密码学教学与创新教育j. 计算机教育,2011, 1(6): 41-45.2 李新生. 信息安全与国

50、家安全j. 网络安全技术与应用,2002, 1(6): 31-34.3 m.mouly,m.b. pautet. gsm数字移动通信系统m. 北京:电子工业出版社,1996.4 赵婷. 基于身份的可认证密钥协商协议研究db. 2008-03-24 . http:/www.do 5 王琪华. gsm的网络与gprs网络安全分析j. 计算机工程与设计,2005,26(2): 429-450.6 陈伟, 胡云, 杨义先. 抗相关攻击的a5/1加密算法识别j. 电子与信息学报,2006, 11(1): 56-60.7 man young rhee. mobile communication syste

51、ms and security m. new jersey: wiley-ieee press, 2009.8 王昭,袁春. 信息安全原理与应用m. 北京:电子工业出版社,2012.9 康文涛. 现代信息加密技术db. 2004-07-14 .cn/periodical_hnkj200407014.aspx. 10 申延成. 流密码的故障攻击db. 2010-04-25 . /article/cdmd-90002-1011279998.htm.11 左平,申延成,华宏图. a5/1的故障分析j. 吉林大学学报(理学版),2013,51(1): 128-131.12 markstamp. inf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论