基于加密算法的计算机保护技术_第1页
基于加密算法的计算机保护技术_第2页
基于加密算法的计算机保护技术_第3页
基于加密算法的计算机保护技术_第4页
基于加密算法的计算机保护技术_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于加密算法的计算机保护技术

随着信息安全秘密披露的增加,信息存储安全在信息安全的重要方面受到了忽视。信息加密技术作为信息安全最有效的方法之一,可通过不同的加密算法来实现,而加密算法的选取直接影响信息的安全程度。数码锁正是针对信息存储安全而研制的产品,他可以提高整个信息资源的安全性。1概念算法1.1省公司的加密算法IDEA是一种数据块加密算法,加密的数据块为64b,密钥长度是128b。该算法在硬件和软件上均可高速进行加解密,而且加密过程与解密过程相同,仅加密密钥与解密密钥不同,他设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥,被认为是目前世界公开的最好最安全的加密算法。虽然密码分析者能对轮数减少的变形做一些分析工作,这么长的密钥在今后若干年内应该是安全的。IDEA算法既用混乱又用扩散,他的设计原则是一种来自于不同代数群的混合运算,且这个代数群进行的运算,无论用硬件还是软件都易于实现:算法输入的64位数据被分成4个16位子分组作为第一轮的输入,总共有8轮迭代。在每一轮中,相互间进行运算同时也与6个16位的子密钥进行运算(每轮均不同),最后还与4个16位的子密钥进行输出变换,产生输出,其中共52个16位的子密钥参与运算。整个算法包括3部分:(1)子密钥的产生。输入:128b密钥;输出:52个16b的子密钥。(2)加密过程。输入:52个子密钥和64b数据;输出:64b数据。(3)解密过程。IDEA算法的加密过程与解密过程的子密钥不相同,且二者是一一对应的。1.2每组的b成分配IDEA共需要52个子密钥,每一个有16b,由128b密钥生成。自密钥将128b分成8组,每组16b,得到k1,k2,…,k8;将128b循环左移25位后做16b分组,得到子密钥k9,k10,…,k16;再将这128b循环左移25位后做同样的分组得到子密钥k17,k18,…,k24;以此类推,直到生成所有的子密钥。1.3迭代运算流程该算法中密钥为128b,明文分组长度是64b。64b被分为4个16b的子块:X1,X2,X3,X4作为第一轮的输入,每一轮中,将4个输入子块与6个16b子密钥分别做模216的加法、模216+1的乘法、异或操作,得到4个输出作为下一轮的输入。如此共进行8轮,最后用4个子密钥作输出变换。其整体结构如图1所示。每一轮的迭代运算步骤如下:(1)X1和第1个子密钥块做乘法运算;(2)X2和第2个子密钥块做加法运算;(3)X3和第3个子密钥块做加法运算;(4)X4和第4个子密钥块做乘法运算;(5)步骤(1)和步骤(3)的结果做异或运算;(6)步骤(2)和步骤(4)的结果做异或运算;(7)步骤(5)的结果与其本身做乘法运算;(8)步骤(6)和步骤(7)的结果做加法运算;(9)步骤(8)和步骤(6)的结果做乘法运算;(10)步骤(7)和步骤(9)的结果做加法运算;(11)步骤(3)和步骤(9)的结果做异或运算;(12)步骤(2)和步骤(10)的结果做异或运算;(13)步骤(4)和步骤(10)的结果做异或运算。结果的输出为步骤(10),步骤(11),步骤(12),步骤(13)的运算结果。第8轮结束后,最后输出变换有四步:(1)X1和第1个子密钥块做乘法运算;(2)X2和第2个子密钥块做加法运算;(3)X3和第3个子密钥块做加法运算;(4)X4和第4个子密钥块做乘法运算。1.4加密子密钥块的逆或乘子法IDEA算法在硬软件上均可高速进行加解密,其中的加解密子密钥关系如下:其中:-Zi表示Zi模216的加法逆元,即-Zi+Zi≡0mod216,Z−1ii-1表示Zi模216+1的乘法逆元,即-ZiZi≡0mod216+1。由上表可见:解密的子密钥块是由加密子密钥的加法逆或乘法逆构成的。解密密钥可以通过查表法获得。2文件的长度。对于第20文本编程实现的加解密思路是:先读入要加密的文件,统计实际文件的长度,依次分块读出数据,从文件中读出的最后一批数据,长度可能会等于0,所以要先判断,若不为0定有8B以上的空间,将文件的长度存于最后8字节中,加解密完后将明文写入文件中。2.1生成密钥2.2将128b分成8组,再循环左移25位后做16b分组,依次类推,直到生成所需的52个子密钥。其关键代码如下:INT32idea_makekey(ULONG32*inkey,ULONG16*outkey)/*子密钥的生成*/{ULONG32i,j,k;ULONG16Pkey=(ULONG16)inkey;for(i=0;i<6;i++){k=i<<3;for(j=0;j<8;j++)/*生成8组密钥*/{outkey[k+j]=Pkey[j];}key_leftmove(inkey);/*128位密钥左环移25位*/}for(i=0;i<4;i++){outkey[48+i]=Pkey[i];}returnSUCCESS;}INT32key_leftmove(ULONG32*inkey)/*密钥左环移25位*/{ULONG32itmpfirst=0,itmp=0;ULONG32i;inkey=(inkey<<25)|(inkey>>7);/*取低25位,因为前面已经做了环移,原始的低7位已经移到了高位,保存*/itmpfirst=inkey&0x1ffffff;inkey&=0xfe000000;/*低25位清0*/for(i=1;i<4;i++){inkey[i]=(inkey[i]<<25)|(inkey[i]>>7);itmp=inkey[i]&0x1ffffff;inkey[i-1]|=itmp;inkey[i]&=0xfe000000;/*低25位清0*/}inkey[i-1]|=itmpfirst;/*把最高25位移到最低25位*/returnSUCCESS;2.2u3000上的强制地位/变异性将明文4个子块与6个子密钥分别做模216的加法、模216+1的乘法、异或操作,得到4个输出作为下一轮的输入,进行8轮迭代,再将4个子密钥做输出变换。其源代码如下:INT32idea_enc(ULONG16*data,ULONG16*outkey)/*加密*/{ULONG32i;ULONG16tmp;if(NULL==data||NULL==outkey){returnFAIL;}for(i=0;i<48;i+=6)/*8轮变换*/{handle_data(data,&outkey[i]);/*轮变换函数*//*交换中间两个*/tmp=data;data=data;data=tmp;}tmp=data;/*最后一轮不交换*/data=data;data=tmp;data=MUL(data,outkey);/*(a*b)*/data+=outkey;data+=outkey;data=MUL(data,outkey);returnSUCCESS;}2.3tmp/2.2解密过程是加密过程的逆,只是子密钥不同而已,其实现的源代码如下:INT32idea_dec(ULONG16*data,ULONG16*outkey)/*解密*/{ULONG32i;ULONG16tmp;if(NULL==data||NULL==outkey){returnFAIL;}for(i=0;i<48;i+=6)/*8轮*/{handle_data(data,&outkey[i]);/*交换中间两个*/tmp=data;data=data;data=tmp;}tmp=data;/*最后一轮不交换*/data=data;data=tmp;data=MUL(data,outkey);data+=outkey;data+=outkey;data=MUL(data,outkey);returnSUCCESS;}2.4转相除法IDEA算法中对实现速度影响最大的是模乘部分,即求乘法逆元,该算法中利用辗转相除法来求得逆元,提高了整个算法的执行效率:INT32j=1,i=0,c=a,x,y;INT32b=maxin;While(c!=0){x=b/c;y=b-x*c;b=c;c=y;y=j;j=i-j*x;i=y;}3加解密芯片admmIDEA算法加密速度快,密钥产生方法简单,硬件、软件均容易实现。该算法若采用搜索破译要2

温馨提示

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

评论

0/150

提交评论