字符XOR与插入符号操作

JDr*_*159 5 c c++ bit-manipulation xor caret

在位上使用异或是我很清楚的事情.但在这里,XOR正致力于个性化角色.那么这是否意味着构成角色的字节正在被异或?这看起来像什么?

#include <iostream.h>
int main()
{
  char string[11]="A nice cat";
  char key[11]="ABCDEFGHIJ";
  for(int x=0; x<10; x++)
  {
    string[x]=string[x]^key[x];
    cout<<string[x];
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道XORed位看起来像这样:
1010
1100
0110

Sjo*_*erd 7

XOR具有很好的属性,如果您使用相同的数据对XOR进行两次异或,则可以获得原始属性.您发布的代码是一些基本的加密函数,它使用密钥"加密"字符串.得到的密文可以通过相同的程序进行解密.

  • 在过去,XOR有时也用于精灵动画,特别是在黑色背景上,而不是掩蔽方法(AND掩码或精灵) (3认同)

Mar*_*ers 5

在C和C++中,字符串通常作为8位char值存储在内存中,其中存储的值是字符的ASCII值.

因此,您的代码对ASCII值进行异或.例如,输出中的第二个字符计算如下:

  'B' ^ ' '
= 66 ^ 32
= 01000010 ^ 00100000
= 01100010
= 98
= 'b'

如果在使用EBCDIC而不是ASCII 的系统上运行此代码,则可能会得到不同的结果.