精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>算法集锦--------梦入玄机>>关于M算法

主题:关于M算法
发信人: 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]

[关闭][返回]