发信人: mrcloud() 
整理人: skyice(2000-05-16 01:09:05), 站内信件
 | 
 
 
【 在 flyingking (鬼金羊) 的大作中提到: 】
 : 小弟要完成的毕业设计里有一部分是用m序列算法对文件进行加密,
 : 包括用C语言编程选取m序列的结构常数和生成m序列,
 : 这个对诸位高手来说是小菜一碟的问题对我这个菜鸟却是难如登天,
 : 有哪位大仁大义的高手肯伸出您热情的手,救小弟于水深火热之中……
 :    .......
 
 没做过加密的研究,我抄一段话给你吧。
 
 M算法是通过组合多个伪随机序列来增加安全性的方法,一个发生器
 的输出往往是其他发生器的输出中选择一个延迟输出,C语言描述为:
 
 #define ARR_SIZE(8192) /* for example - the larger the better */
 
 static unsigned char delay[ARR_SIZE];
 
 unsigned char pmgA(void);
 long pmgB(void);
 
 void init_algM(void)
 {
   long i;
   for (i=0;i<ARR_SIZE;i++)
     delay[i] = pmgA();
 }
 
 unsigned char algM(void)
 {
   long j,v;
   j = pmgB() % ARR_SIZE /* get the delay[] index */
   v = delay[j]; /* get the value to return */
   delay[j] = pmgA(); /* replace it */
 
   return v;
 }
 
 如果pmgA为真随机,那么这个算法足够强。
 
  -- ...我是在黑夜里展翅飞翔的恐怖...
  ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: branch-1-f30.st]
  | 
 
 
 |