代码改变世界

c# 如何利用异或运算进行简单加密解密

2017-07-26 14:27  杨新华  阅读(6414)  评论(0编辑  收藏  举报

利用“^”异或运算对字符串进行加密

原理:按位做“异或”运算是->位值相同得1,不同得0,如下计算

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

 

例如:

< 加密过程:>

原解释的二进制为          1  1  0  0   ----原文

设定的key的二进制为     0  1  1  0  ----密钥

两者做“异或”结果为    0  1  0  1 ----密文

 

< 解密过程:>

                                      0  1  0  1 ----密文

             0  1  1  0  ----密钥

两者“异或”就得到了  1  1  0  0 ----原文

 

使用c# 实现如下:

  /// <summary>
        /// 异或的加密解密
        /// </summary>
        /// <param name="str">原文/密文字符串</param>
        /// <returns>原文/密文字符串</returns>
        public static string BCutEncrypt(string str)
        {
            char emblem = '\n';//密钥
            StringBuilder buffer = new StringBuilder();
            char[] chars = str.ToCharArray();
            foreach(char ch in chars)
            {
                char temp = (char)(ch ^ emblem);
                buffer.Append(temp);
            }
            return buffer.ToString();
        }