我正在尝试混淆程序中的字符串。目前,我只有一个简单的字符串反转工作。我希望能够对数据执行 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<len;i++) {
ch=*text++;
if (ch)
*text = ch ^ enc[ind++];
ind %=8;
}
}
有人可以帮忙吗?将不胜感激!
你似乎把事情变得有点过于复杂了。试试这个:
void charxor (unsigned char *text, int len) {
const unsigned char enc[8] = {173,135,131,121,110,119,187,143};
int i;
for (i = 0; i < len; i++) {
text[i] ^= enc[i % 8];
}
}
请注意,XOR 操作可能会在字符串中引入空字符,因此您确实需要跟踪其长度,而不仅仅是依赖于尾随空字符的存在。
另请记住,虽然这可能确实是相对地说比仅仅反转字符串“安全得多”,任何相当聪明的人只要能够访问足够的输出样本,就可能在大约十五分钟左右的时间内弄清楚如何对其进行解码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)