数据加密技术计算机应用研究论文

上传人:桔**** 文档编号:466333443 上传时间:2023-05-28 格式:DOCX 页数:5 大小:16.68KB
返回 下载 相关 举报
数据加密技术计算机应用研究论文_第1页
第1页 / 共5页
数据加密技术计算机应用研究论文_第2页
第2页 / 共5页
数据加密技术计算机应用研究论文_第3页
第3页 / 共5页
数据加密技术计算机应用研究论文_第4页
第4页 / 共5页
数据加密技术计算机应用研究论文_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据加密技术计算机应用研究论文》由会员分享,可在线阅读,更多相关《数据加密技术计算机应用研究论文(5页珍藏版)》请在金锄头文库上搜索。

1、数据加密技术计算机应用研究论文 我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争剧烈的大公司中,工业间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的平安措施来保护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。 一:数据加密方法在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些

2、加密算法的当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。幸运的是,在所有的加密算法中最简单的一种就是“置换表算法,这种算法也能很好到达加密的需要。每一个数据段总是一个字节对应着“置换表中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表。事实上,80x8

3、6cpu系列就有一个指令xlat在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表就可以了。这种方法在计算机出现之前就已经被广泛的使用。对这种“置换表方式的一个改进就是使用2个或者更多的“置换表,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比方,我们可以对所有的偶数位置的数据使用a表,对所

4、有的奇数位置使用b表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。与使用“置换表相类似,“变换数据位置也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer中,再在buffer中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序复原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient可以变为listen,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。但是,还有一种更好的加密算法,只有计算机可以

5、做,就是字/字节循环移位和xor操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向左移或右移,就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难!而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci数列。对数列所产生的数做模运算例如模3,得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能!但是,使用fibbonaci数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。在一些情况下,我们想能够知道数据是否已经

6、被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的病毒才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load到内存要开始执行时,都要检查一下本身是否被病毒感染,对与需要加、解密的文件都要做这种检查!很自然,这样一种方法体制应该保密的,因为病毒程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反病毒或杀病毒软件中一定要使用加密技术。循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor操作来产生一个16位或32位的校验和,这使得丧失一位或两个位

7、的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如xmodem-crc。这是方法已经成为标准,而且有详细的文档。但是,基于标准crc算法的一种修改算法对于发现加密数据块中的错误和文件是否被病毒感染是很有效的。二基于公钥的加密算法一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常著名的pgp公钥加密以及rsa加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥

8、,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。例如,对于一个输入a执行一个操作得到结果b,那么我们可以基于b,做一个相对应的操作,导出输入a。在一些情况下,对于每一种操作,我们可以得到一个确定的值,或者该操作没有定义比方,除数为0。对于一个没有定义的操作来讲,基于加密算法,可以成功地防止把一个公钥变换成为私钥。因此,要想破译非对称加密算法,找到那个唯一的密钥,唯一的方法只能是反复的试验,而这需要大量的处理时间。rsa加密算法使用了两个非常大的素数来产生公钥和私钥。即使从一个公钥中通过因数分解可以得到私钥,但这个运算所包含的计算量是非常巨大的,以至于在现实上是不可行的。加密算法

9、本身也是很慢的,这使得使用rsa算法加密大量的数据变的有些不可行。这就使得一些现实中加密算法都基于rsa加密算法。pgp算法(以及大多数基于rsa算法的加密方法)使用公钥来加密一个对称加密算法的密钥,然后再利用一个快速的对称加密算法来加密数据。这个对称算法的密钥是随机产生的,是保密的,因此,得到这个密钥的唯一方法就是使用私钥来解密。我们举一个例子:假定现在要加密一些数据使用密钥12345。利用rsa公钥,使用rsa算法加密这个密钥12345,并把它放在要加密的数据的前面可能后面跟着一个分割符或文件长度,以区分数据和密钥,然后,使用对称加密算法加密正文,使用的密钥就是12345。当对方收到时,解

10、密程序找到加密过的密钥,并利用rsa私钥解密出来,然后再确定出数据的开始位置,利用密钥12345来解密数据。这样就使得一个可靠的经过高效加密的数据平安地传输和解密。一些简单的基于rsa算法的加密算法可在下面的站点找到: ftp:/ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa三一个崭新的多步加密算法现在又出现了一种新的加密算法,据说是几乎不可能被破译的。这个算法在1998年6月1日才正式公布的。下面详细的介绍这个算法:使用一系列的数字比方说128位密钥,来产生一个可重复的但高度随机化的伪随机的数字的序列。一次使用256个表项,使用随机数序列

11、来产生密码转表,如下所示:把256个随机数放在一个距阵中,然后对他们进行排序,使用这样一种方式我们要记住最初的位置使用最初的位置来产生一个表,随意排序的表,表中的数字在0到255之间。如果不是很明白如何来做,就可以不管它。但是,下面也提供了一些原码在下面是我们明白是如何来做的。现在,产生了一个具体的256字节的表。让这个随机数产生器接着来产生这个表中的其余的数,以至于每个表是不同的。下一步,使用shotguntechnique技术来产生解码表。根本上说,如果a映射到b,那么b一定可以映射到a,所以ban=n.n是一个在0到255之间的数。在一个循环中赋值,使用一个256字节的解码表它对应于我们

12、刚刚在上一步产生的256字节的加密表。使用这个方法,已经可以产生这样的一个表,表的顺序是随机,所以产生这256个字节的随机数使用的是二次伪随机,使用了两个额外的16位的密码.现在,已经有了两张转换表,根本的加密解密是如下这样工作的。前一个字节密文是这个256字节的表的索引。或者,为了提高加密效果,可以使用多余8位的值,甚至使用校验和或者crc算法来产生索引字节。假定这个表是256*256的数组,将会是下面的样子:crypto1=acrypto0value变量crypto1是加密后的数据,crypto0是前一个加密数据或着是前面几个加密数据的一个函数值。很自然的,第一个数据需要一个“种子,这个“

13、种子是我们必须记住的。如果使用256*256的表,这样做将会增加密文的长度。或者,可以使用你产生出随机数序列所用的密码,也可能是它的crc校验和。顺便提及的是曾作过这样一个测试:使用16个字节来产生表的索引,以128位的密钥作为这16个字节的初始的种子。然后,在产生出这些随机数的表之后,就可以用来加密数据,速度到达每秒钟100k个字节。一定要保证在加密与解密时都使用加密的值作为表的索引,而且这两次一定要匹配。加密时所产生的伪随机序列是很随意的,可以设计成想要的任何序列。没有关于这个随机序列的详细的信息,解密密文是不现实的。例如:一些ascii码的序列,如“eeeeeeee可能被转化成一些随机的

14、没有任何意义的乱码,每一个字节都依赖于其前一个字节的密文,而不是实际的值。对于任一个单个的字符的这种变换来说,隐藏了加密数据的有效的真正的长度。如果确实不理解如何来产生一个随机数序列,就考虑fibbonacci数列,使用2个双字64位的数作为产生随机数的种子,再加上第三个双字来做xor操作。这个算法产生了一系列的随机数。算法如下:unsignedlongdw1,dw2,dw3,dwmask;inti1;unsignedlongarandom256;dw1=seed#1;dw2=seed#2;dwmask=seed#3;/thisgivesyou332-bitseeds,or96bitstota

15、lfor(i1=0;i1dw3=(dw1+dw2)dwmask;arandomi1=dw3;dw1=dw2;dw2=dw3;如果想产生一系列的随机数字,比方说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:int_cdeclmysortproc(void*p1,void*p2)unsignedlong*pp1=(unsignedlong*)p1;unsignedlong*pp2=(unsignedlong*)p2;if(*pp1return(-1);elseif(*pp1*pp2)return(1);return(0);.inti1;unsignedlong*aprandom256;unsignedlongarandom256;/samearrayasbefore,inthiscaseintaresult256;/resultsgoherefor(i1=0;i1aprandomi1=arandom+i1;/nowsortitqsort(aprandom,256,sizeof(*aprandom),mysortproc);/finalstep-offsetsforpointersareplacedintooutputarrayfor(i1=0;i1aresulti1=(int)(a

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号