如何使用C中的整数对char数组进行异或

时间:2017-10-25 09:45:58

标签: c xor

我正在尝试用C实现加密算法。我有一个unsigned char数组;

 unsigned char ciphertext[] = { 0xA5, 0xB2, 0x3C, 0xAB, 0x03, 0xF1, 0xD3, 0x1C, 0x7F, 0xAD, 0x37, 0xA8, 0x8C, 0x8B, 0xCD, 0x90, 0xD4, 0xC2, 0x30, 0xAB, 0xD2, 0x3F, 0x3D, 0xAF, 0x58, 0x94, 0x1F, 0x50, 0xAF, 0xA2, 0xCE, 0x01 };

我需要对char数组进行XOR运算,所有值都是1到256.如何在C中执行?先感谢您。  编辑:   我想用;

对我的char数组进行异或
unsigned char [] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01};
unsigned char two = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02};
unsigned char three[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03};

等等......这就是为什么我不能透过每个元素的原因。这会有所不同。

2 个答案:

答案 0 :(得分:0)

类似的东西:

int i;
for (i = 0; i < length; i++) {
    cryptotext[i] = ciphertext[i] ^ (i%256);
}

请注意,如果您不想保留纯文本,则只能使用一个数组:

ciphertext[i] ^= (i%256);

答案 1 :(得分:0)

XOR执行以下操作。请看下面。

x   y    XOR
------------
0   0     0
1   0     1
0   1     1
1   1     0

你不能将整个阵列整合在一起。你需要遍历数组并逐个字符地转换它。

执行数组循环并执行XOR操作。