设为首页|收藏本页|用户反馈|网站地图
今天是:
您现在的位置: 中华管理在线 >> 论文 >> IT类论文 >> 正文
论数据加密技术(第4页)
作者:佚名    论文来源:本站整理    更新时间:2007-9-21

dw1,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=dw3;
  
  }
  
  如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:
  
  int__cdeclmysortproc(void*p1,void*p2)
  
  {
  
  unsignedlong**pp1=(unsignedlong**)p1;
  
  unsignedlong**pp2=(unsignedlong**)p2;
  
  if(**pp1<**pp2)
  
  return(-1);
  
  elseif(**pp1>*pp2)
  
  return(1);
  
  return(0);
  
  }
  
  ...
  
  inti1;
  
  unsignedlong*aprandom[256];
  
  unsignedlongarandom[256];//samearrayasbefore,inthiscase
  
  intaresult[256];//resultsgohere
  
  for(i1=0;i1<256;i1++)
  
  {
  
  aprandom[i1]=arandom+i1;
  
  }
  
  //nowsortit
  
  qsort(aprandom,256,sizeof(*aprandom),mysortproc);
  
  //finalstep-offsetsforpointersareplacedintooutputarray
  
  for(i1=0;i1<256;i1++)
  
  {
  
  aresult[i1]=(int)(aprandom[i1]-arandom);
  
  }
  
  ...
  
  变量'aresult'中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在0到255之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个

上一页  [1] [2] [3] [4] [5] 下一页

延伸阅读:
[165博客] [社区讨论] [打印此文] [责任编辑:小林]
更多>>
娱乐图文精彩推荐
更多>>
中华健康每日推荐
更多>>
中华财经创业
今日财经要闻
股市大盘
创业指南
管理学论文
经济学论文