我想在程序中混淆字符串。目前,我只有一个简单的字符串反转工作。我希望能够对数据执行异或扰码以使其更加安全,但我尝试的方法无法正常工作。XOR如何在C中加扰字符串,并使用相同的函数再次加密?
使用相同的函数和输入类型来解码字符串。这对字符串反转没有任何问题,因为它只是反转回来,但这可以通过XOR轻松完成,而不会太复杂?我宁愿如果进程只保留一个字符串,就像逆转一样。这是我的逆转功能。
void reverse_string(unsigned char *buf, int length)
{
int i;
unsigned char temp;
for (i = 0; i < length/2; i++)
{
temp = buf[i];
buf[i] = buf[length - i - 1];
buf[length - i - 1] = temp;
}
}
这里是在XOR功能
void charxor(char * text, int len) {
const unsigned char enc[8]={173,135,131,121,110,119,187,143};
char ch;
int i;
int ind=0;
for (i=0;i
ch=*text++;
if (ch)
*text = ch^enc[ind++];
ind %=8;
}
}
尝试谁能帮助?将不胜感激!
2012-03-05
Matthew
+1
您正在写一个字节的XORed字符,这就是导致奇怪行为的原因。此外,该空检查会导致加密和解密不对称。 –
2012-03-05 19:13:21
+0
你如何通过解释你当前的尝试失败来帮助我们。我的意思是,我可以自己解决问题,但是你真的应该在你的问题中包含这些细节。 –
2012-03-05 19:13:55