using System;
class MainClass
{
    static void Main()
    {
        char ch1 = 'h';
        char ch2 = 'i';
        char ch3 = '!';
        int key = 88;        Console.WriteLine("原信息 ; " + ch1 + ch2 + ch3);        // 编码信息
        ch1 = (char)(ch1 ^ key);
        ch2 = (char)(ch2 ^ key);
        ch3 = (char)(ch3 ^ key);
        Console.WriteLine("编码信息 ; " + ch1 + ch2 + ch3);        // 解码信息
        ch1 = (char)(ch1 ^ key);
        ch2 = (char)(ch2 ^ key);
        ch3 = (char)(ch3 ^ key);
        Console.WriteLine("编码信息 ; " + ch1 + ch2 + ch3);
    }
}
结果:原信息 ;hi!
编码信息 ;01y
编码信息 ;hi!但是书上的结果是 :原信息 ;hi!
编码信息 ;ly
编码信息 ;hi!还有 ch1 = (char)(ch1 ^ key); 这句怎么解释?

解决方案 »

  1.   

    最简单的异或加密。
    看看书上的key是不是88?要不是88,就说明书上的错了贝
      

  2.   

    key是88
    把ch1和88进行异或操作
      

  3.   

    首先,书上的结果是不正确的  ^运算符 将会计算操作数的按位“异或”        // 编码信息
            ch1 = (char)(ch1 ^ key);
            ch2 = (char)(ch2 ^ key);
            ch3 = (char)(ch3 ^ key);

            Console.WriteLine("编码信息 ; " + ch1 + ch2 + ch3);        // 解码信息
            ch1 = (char)(ch1 ^ key);
            ch2 = (char)(ch2 ^ key);
            ch3 = (char)(ch3 ^ key);

            Console.WriteLine("解码信息 ; " + ch1 + ch2 + ch3);请您把这些行都设上断点 再看您的vs工具条 点击调试-〉窗口-〉局部变量 执行后一目了然 :)
      

  4.   

    设置了断点的代码。你可以按F5,F10,F11来对些设置了断点的代码进行调试了。