我正在尝试用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};
等等......这就是为什么我不能透过每个元素的原因。这会有所不同。
答案 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操作。