保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 计算机论文 >> 正文

数据加密技术-


明白如何来做,就可以不管它。但是,下面也提供了一些原码(在下面)是我们明白是如何来做的。现在,产生了一个具体的256字节的表。让这个随机数产生器接着来产生这个表中的其余的数,以至于每个表是不同的。下一步,使用"shotguntechnique"技术来产生解码表。基本上说,如果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操作。这个算法产生了一系列的随机数。算法如下:
  
  
  
  unsignedlongdw1,dw2,dw3,dwmask;
  
  inti1;
  
  unsignedlongarandom[256];
  
  
  
  dw1={seed#1};
  
  dw2={seed#2};
  
  dwmask={seed#3};
  
  //thisgivesyou332-bit"seeds",or96bitstotal
  
  for(i1=0;i1<256;i1++)
  
  {
  
  dw3=(dw1+dw2)^dwmask;
  
  arandom[i1]=dw3;
  
  dw1=dw2;
  
  dw2&n
  
  
  
  bsp;=dw3;
  
  }
  
  
  
  如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:
  
  
  
  int__cdeclmysortproc(void*p1,void*p2)
  
  {
  
  unsignedlong**pp1=(unsignedlong**)p1;
  
  unsignedlong**pp2=(unsigne

《数据加密技术-(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174060.html

★温馨提示:你可以返回到 计算机论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。