发信人: 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]
|
|