异或加解密
加解密操作中异或经常用到。 异或在C中使用^表示,异或可以这样理解:相同为0,不同为1。
注意下面的内容:
char a = 'a'; char b = 'a'; int c = a ^ b; //0 c = a ^ b ^ b; //a
//简单异或加解密代码
//作者:可爱的猴子
//作者blog:http://www.dreamdu.com/blog/
//参考:应用密码学
void XORCrypto(int key, char* infile, char* outfile)
{
FILE *fi;
FILE *fo;
int *cp;
int c;
if((cp = &key)&&( *cp != '\0'))
{
if((fi=fopen(infile,"rb"))!=NULL)
{
if((fo=fopen(outfile,"wb"))!=NULL)
{
while((c=getc(fi))!=EOF)
{
if(!*cp) cp=&key;
c^=((*cp)++);
putc(c,fo);
}
fclose(fo);
}
fclose(fi);
}
}
}
由于用同一值异或两次就恢复出原来的值,所以加密解密都应严格采用上面这段程序,并且使用同一个key。
猴子提示: 千万别指望这种加密能保护你的信息!


2009-05-30
有道理“`
[Reply]