您的位置:首页 > 编程语言 > C#

简单加密与解密和 & | ^ 的应用

2010-06-30 13:16 429 查看
以下是我在学c#时做的一个简单加密和解密例子,主要是熟悉& | ^ 三个符号在c#的使用:

Code:

using System;   

class Key   

{   

   //加密和解密   

   public string setKey(string s_text, string s_key)   

   {   

      string result = null;   

      int k = 0;   

      for(int i = 0; i<s_text.Length; i++)   

      {   

         char ch = s_text[i];   

         try{   

             ch = (char)(ch ^ s_key[i]);   

         }catch(IndexOutOfRangeException)   

         {   

             ch = (char)(ch ^ k);   

             k++;   

         }   

         result = result + ch;   

      }   

      return result;   

   }   

  

   public static void Main(string[] args)   

   {   

       Key keyObj = new Key();   

       string replay = "y";   

       do{   

          Console.WriteLine("请选择:A、加密  B、解密");   

          string choose = Console.ReadLine();   

          if(!choose.Equals("A")&&!choose.Equals("B"))   

          {   

             Console.WriteLine("你选错了!/n");   

             continue;   

          }   

          if(choose.Equals("A"))   

          {   

             Console.WriteLine("请输入要加密的原字符串:");   

             string s_text = Console.ReadLine();   

             Console.WriteLine("请输入密钥字符串:");   

             string s_key = Console.ReadLine();   

             string txtKey = keyObj.setKey(s_text,s_key);   

             Console.WriteLine("加密后:" + txtKey);   

          }   

          else  

          {   

             Console.WriteLine("请输入要解密的字符串:");   

             string s_text = Console.ReadLine();   

             Console.WriteLine("请输入密钥字符串:");   

             string s_key = Console.ReadLine();   

             string txtKey = keyObj.setKey(s_text,s_key);   

             Console.WriteLine("解密后:" + txtKey);   

          }   

          while(true)   

          {   

             Console.WriteLine("要继续吗? y:继续  n:退出!");   

             replay = Console.ReadLine();   

             if(!replay.Equals("y") && !replay.Equals("n"))   

             {   

                Console.WriteLine("你选错了!");   

             }   

             else  

             {   

               break;   

             }   

          }   

       }while(replay.Equals("y"));   

   }    

}   

  

把“要加密的字符串”遂一取出字符然后查ascii码表,如“A”查到是“65” ,把"65"转二进制是“01000001”;

把“密钥字符串”同样遂一取出字符然后查ascii码表,如“8"查到是“56”,把"56" 转二进制是“00111000”;

然后把01000001 ^ 00111000运算,运算规则如下:

按位与(&):

都为1时结果为1,否则为0;

按位或(|):

都为0时结果为0,否则为1;

按位异或(^):

相同为0,不同为1。

例:(01000001)^(00111000) = 01111001

把01111001转为十进制为“121”,查ascii码表是y,也就明文"A"通过“8”密钥加密后得到密文“y”,解密同理。

本文是个人原创,如文中有错或你有建议,请留言指出,如要交流请加QQ519870018,如要转载本文,请标明本文出处。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/CpuSheep/archive/2010/06/30/5704302.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  解密 加密 c# string null qq