c语言字符串异或,XOR如何在C中加扰字符串,并使用相同的函数再次加密?

博主正在尝试在C语言中使用异或(XOR)操作对字符串进行加密,但遇到了问题。现有的代码只能简单地反转字符串。他们希望通过相同的函数实现加密和解密过程,以保持字符串的可逆性,类似于反转。提供的XOR函数使用了一个固定的字节数组进行加密,但存在导致行为异常的问题。评论者指出,加密过程中对空字符的处理以及字节的XOR方式可能是问题所在。
摘要由CSDN通过智能技术生成

我想在程序中混淆字符串。目前,我只有一个简单的字符串反转工作。我希望能够对数据执行异或扰码以使其更加安全,但我尝试的方法无法正常工作。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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值