加密的一些事。。。

///<summary>/// 加密字符
    ///</summary>///<param name=pToEncrypt>加密字符串</param>///<param name=skey>加密密钥</param>///<returns>返回加密</returns>publicclass DescMD5
    {
       publicstaticstring skey ="abcdefgh";

        publicstring Skey
        {
            get { return skey; }
            set { skey = value; }
        }


       ///<summary>/// 加密函数
       ///</summary>///<param name="pToEncrypt"></param>///<returns></returns>publicstring EnCrypt(string pToEncrypt)
       {
           //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象           DESCryptoServiceProvider des =new DESCryptoServiceProvider();
           des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(skey);//建立加密对象的密钥和偏移量           des.IV = ASCIIEncoding.ASCII.GetBytes(skey); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法byte[] inputbyteArray = Encoding.Default.GetBytes(pToEncrypt);//把字符串放到byte数组中           MemoryStream ms =new MemoryStream();//创建其支持存储区为内存的流           
           CryptoStream cs =new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
           cs.Write(inputbyteArray, 0, inputbyteArray.Length);
           cs.FlushFinalBlock();//上面已经完成了把加密后的结果放到内存中去

           StringBuilder ret =new StringBuilder();
           foreach (byte b in ms.ToArray())
           {
               ret.AppendFormat("{0:X2}", b);
            
           
           }
           return ret.ToString();



       }
       
            

       ///<summary>/// 解密ESC函数
       ///</summary>///<param name="pToDecrypt">被解密的字符串</param>///<param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>///<returns>返回被解密的字符串</returns>publicstring DeCrypt(string pToDecrypt)
       {

           DESCryptoServiceProvider des =new DESCryptoServiceProvider();
       
           byte []inputbyteArray=newbyte[pToDecrypt.Length/2];
           for (int i =0; i < pToDecrypt.Length /2; i++)
           {
               int x = Convert.ToInt32(pToDecrypt.Substring(i *2, 2), 16);

               inputbyteArray[i] = (byte)x;
           
           }
           des.Key = ASCIIEncoding.ASCII.GetBytes(skey);
           des.IV = ASCIIEncoding.ASCII.GetBytes(skey);
           MemoryStream ms =new MemoryStream();
           CryptoStream cs =new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
           cs.Write(inputbyteArray, 0, inputbyteArray.Length);
           cs.FlushFinalBlock();


           return System.Text.Encoding.Default.GetString(ms.ToArray());

       }

       public DescMD5() { }



    }

posted on 2012-03-20 16:42  hehedada  阅读(149)  评论(0编辑  收藏  举报

导航