WWW.51LUNWEN.COM 无忧论文网
蜂朝集团总站|英语论文网|免费论文网|论文导航网 英国·澳大利亚·新西兰·加拿大·美国
无忧论文网无忧论文网名校师资提供一流服务
2008/8/30 星期六
论文首页 | 论文下载 | 论文写作 | 论文老师 | 论文代写 | 论文发表 | 发表杂志 | 发表供需 | 翻译服务 | 支付方式
  论文出售 | 留学论文 | 论文格式 | 硕士论文 | MBA论文 | 金融硕士| 博士论文 | 本科论文 | 教育导航 我的无忧  
经济论文|社会哲学|英语论文|新闻媒体|历史文学|保险论文|会计审计|法律论文|艺术论文|工程论文|化工冶金|机械自动|能源动力|电子信息|计算机科|土建论文|航空气象|生命环境|物理论文|地理地质|数学论文|医学论文|农业科学|交通运输|消防安全|考古论文|工商管理|行政政治|工程项目|公共管理|教学论文|教育论文|应用范文|财务范文|合同样本|政工类文|法律法规|网络营销|论文写作|留学文书|英语翻译|法语翻译|
蜂朝无忧论文网论文下载中心 [自然科学类][计算机科学][计算机应用]数据加密技术
本类导航  
计算机科学
 →计算机软件
 →计算机应用
 →计算机网络
 →计算机数据库
 →计算机硬件
本专业最热门的论文
图书馆管理系统(16066)
电子商务安全机制研究-支付系统的研究与实现(3067)
数据加密技术(2556)
中小企业网站建设(2340)
《编译技术》多媒体课件制作(附开题报告,任务书,外文资料翻译等)(2302)

Google 英语论文 硕士论文 论文下载 论文发表
论文题目: 数据加密技术
论文编号: lw200708221116085960
论文属性: 学术论文
论文国籍:
论文语言:中文
登出日期: 2007-08-22  
点击次数:2555
论文字数:4616
购买价格: 免费论文
论文大纲,目录
关键词搜索:计算机应用论文   学术论文
单的基于rsa算法的加密算法可在下面的站点找到:

ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa



三.一个崭新的多步加密算法



现在又出现了一种新的加密算法,据说是几乎不可能被破译的。这个算法在1998年6月1日才正式公布的。下面详细的介绍这个算法:

使用一系列的数字(比如说128位密钥),来产生一个可重复的但高度随机化的伪随机的数字的序列。一次使用256个表项,使用随机数序列来产生密码转表,如下所示:

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



使用这个方法,已经可以产生这样的一个表,表的顺序是随机,所以产生这256个字节的随机数使用的是二次伪随机,使用了两个额外的16位的密码.现在,已经有了两张转换表,基本的加密解密是如下这样工作的。前一个字节密文是这个256字节的表的索引。或者,为了提高加密效果,可以使用多余8位的值,甚至使用校验和或者crc算法来产生索引字节。假定这个表是256*256的数组,将会是下面的样子:



crypto1 = a[crypto0][value]



变量'crypto1'是加密后的数据,'crypto0'是前一个加密数据(或着是前面几个加密数据的一个函数值)。很自然的,第一个数据需要一个“种子”,这个“种子” 是我们必须记住的。如果使用256*256的表,这样做将会增加密文的长度。或者,可以使用你产生出随机数序列所用的密码,也可能是它的crc校验和。顺便提及的是曾作过这样一个测试: 使用16个字节来产生表的索引,以128位的密钥作为这16个字节的初始的"种子"。然后,在产生出这些随机数的表之后,就可以用来加密数据,速度达到每秒钟100k个字节。一定要保证在加密与解密时都使用加密的值作为表的索引,而且这两次一定要匹配。



加密时所产生的伪随机序列是很随意的,可以设计成想要的任何序列。没有关于这个随机序列的详细的信息,解密密文是不现实的。例如:一些ascii码的序列,如“eeeeeeee"可能被转化成一些随机的没有任何意义的乱码,每一个字节都依赖于其前一个字节的密文,而不是实际的值。对于任一个单个的字符的这种变换来说,隐藏了加密数据的有效的真正的长度。



如果确实不理解如何来产生一个随机数序列,就考虑fibbonacci数列,使用2个双字(64位)的数作为产生随机数的种子,再加上第三个双字来做xor操作。 这个算法产生了一系列的随机数。算法如下:



unsigned long dw1, dw2, dw3, dwmask;

int i1;

unsigned l无忧论文 【http://www.uklunwen.com】ong arandom[256];



dw1 = {seed #1};

dw2 = {seed #2};

dwmask = {seed #3};

// this gives you 3 32-bit "seeds", or 96 bits total

for(i1=0; i1 < 256; i1++)

{

dw3 = (dw1 + dw2) ^ dwmask;

arandom[i1] = dw3;

dw1 = dw2;

dw2 = dw3;

}



如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:



int __cdecl mysortproc(void *p1, void *p2)

{

unsigned long **pp1 = (unsigned long **)p1;

unsigned long **pp2 = (unsigned long **)p2;

if(**pp1 < **pp2)

return(-1);

else if(**pp1 > *pp2)

return(1);

return(0);

}



...

int i1;

unsignedlong*aprandom[256];

unsignedlongarandom[256];// same array as before, in this case

intaresult[256];// results go here



for(i1=0; i1 < 256; i1++)

{

aprandom[i1] = arandom + i1;

}



// now sort it

qsort(aprandom, 256, sizeof(*aprandom), mysortproc);



// final step - offsets for pointers are placed into output array

for(i1=0; i1 < 256; i1++)

{

aresult[i1] = (int)(aprandom[i1] - arandom);

}

...



变量'aresult'中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在0到255之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个组成部分。



作为一个测试,开发了一个应用程序来测试上面所描述的加密算法。程序本身都经过了几次的优化和修改,来提高随机数的真正的随机性和防止会产生一些短的可重复的用于加密的随机数。用这个程序来加密一个文件,破解这个文件可能会需要非常巨大的时间以至于在现实上是不可能的。



四.结论:

由于在现实生活中,我们要确保一些敏感的数据只能被有相应权限的人看到,要确保信息在传输的过程
第1页 第2页 第3页 
上一篇:详解加密技术概念、加密方法以及应用下一篇:基于WWW的协同式CAI软件的Jav
最新论文 最热门论文
英语语用失误原因分析及教学对策
电子政务中的数据交换技术
基于java的数据库连接池技术应用研究
中国移动通信企业信息化建设探讨
电子商务中网上商城的设计与开发
校园网站设计
英语专业毕业论文-英语委婉语的交际功能
图书馆管理系统
英语毕业论文:Collaborative Principled Negotiation
论英汉翻译中的“直译”与“意译”现象
论文首页】【设为主页】【加入收藏】【打印本文】【回到顶部
 
 
Copyright (c) 2002 ~ 2009 蜂朝集团旗下网站. All rights reserved.