c中的异或加密代码。但我无法理解具体的行
xor encryption code in c. but I can't understand specific line
大家好,我是c语言新手,英语不好。
我有一个问题。
int _len = len+24;
while(_len>0 || count%24){
if(ind<24) msg[ind] = bytes[ind];
else{
msg[ind] = (_len>0?buf[ind-24]:'@')^msg[ind-24];
}
++ind;
--_len;
++count;
}
这是加密代码。
但我无法理解 else 中的第 4 行。
我认为只是对索引为 -12 的数组的特定索引进行异或运算。
我猜对了吗?
图1是我的目的
我的代码适合图1吗?
请给我解释一下。
谢谢。
您可以重写该语句以使其更明显:
msg[ind] = (_len>0?buf[ind-24]:'@')^msg[ind-24];
与
相同
char tmp;
if (_len >0)
tmp = buf[ind-24];
else
tmp = '@';
msg[ind] = tmp ^ msg[ind-24];
在没有更多上下文的情况下,我只需要假设一些事情:
buf
似乎是一个 char
数组,其中包含要加密的消息。
msg
是一个char
数组,用于存储加密信息。
bytes
可能是一个保存加密密钥的数组。这也是用来填充msg
. 的前24个字节
- 前 24 个字节后
msg
的每个元素都是通过将 buf
的值与我们之前计算的 24 个字节的加密值进行异或计算得到的。
- 如果输入消息中没有更多字节,循环将继续进行 24 次迭代的倍数,现在使用
'@'
替换输入消息。
基本上,由 24 个字符组成的密钥用于异或给定文本。由于前 24 个字节似乎包含密钥,因此并没有什么秘密。 ;)
大家好,我是c语言新手,英语不好。
我有一个问题。
int _len = len+24;
while(_len>0 || count%24){
if(ind<24) msg[ind] = bytes[ind];
else{
msg[ind] = (_len>0?buf[ind-24]:'@')^msg[ind-24];
}
++ind;
--_len;
++count;
}
这是加密代码。
但我无法理解 else 中的第 4 行。
我认为只是对索引为 -12 的数组的特定索引进行异或运算。
我猜对了吗?
图1是我的目的
我的代码适合图1吗?
请给我解释一下。
谢谢。
您可以重写该语句以使其更明显:
msg[ind] = (_len>0?buf[ind-24]:'@')^msg[ind-24];
与
相同 char tmp;
if (_len >0)
tmp = buf[ind-24];
else
tmp = '@';
msg[ind] = tmp ^ msg[ind-24];
在没有更多上下文的情况下,我只需要假设一些事情:
buf
似乎是一个char
数组,其中包含要加密的消息。msg
是一个char
数组,用于存储加密信息。bytes
可能是一个保存加密密钥的数组。这也是用来填充msg
. 的前24个字节
- 前 24 个字节后
msg
的每个元素都是通过将buf
的值与我们之前计算的 24 个字节的加密值进行异或计算得到的。 - 如果输入消息中没有更多字节,循环将继续进行 24 次迭代的倍数,现在使用
'@'
替换输入消息。
基本上,由 24 个字符组成的密钥用于异或给定文本。由于前 24 个字节似乎包含密钥,因此并没有什么秘密。 ;)