异或加解密

加解密操作中异或经常用到。 异或在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。

猴子提示: 千万别指望这种加密能保护你的信息!

Random Posts

作者: 可爱的猴子
原载: 可爱的猴子的blog
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

发表评论

异或加解密“1个评论”(只显示最后20条评论)

为了在有限的时间内做出更多更好的教程,留言只解答教程中发现的问题,请谅解

  1. sadshell 说:

    有道理“`

    [Reply]