异或加密
#include "stdafx.h"
#include <string.h>
//主要针对文本进行加密
void encode(char *p, char * key)
{
int plen = strlen(p);
int klen = strlen(key);
for (int i = 0, j = 0; i < plen; i++, j++)
{
if (j%klen == 0)
{
//此处相当于判断密钥是否对应循环了一次
//保证不超出密钥的范围,进行循环加密
j = 0;
}
if (p[i] != key[j])
{
//相同字符异或会得0 而字符串的值中
//有0会中断 导致strlen的值发生变化
p[i] ^= key[j];//加密
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char buf[2048] = "i love xxxx";
char *key = "19960804";
// printf("len = %d %s \n",strlen(buf),buf);
encode(buf, key);
// printf("\n\n\n len = %d %s \n",strlen(buf),buf);>
printf("请输入密钥,下面有我想说的话:");
char secret[50];
scanf("%s", secret);
encode(buf, secret);//再次异或进行解密
//printf("\n\n\nlen = %d %s \n", strlen(buf), buf);
printf("%s \n", buf);
return 0;
}