using System.Security.Cryptography;
        
/// <summary>
        
/// 加密
        
/// </summary>
        
/// <param name="pToEncrypt"></param>
        
/// <param name="sKey"></param>
        
/// <returns></returns>
        public string Encrypt(string pToEncrypt, string sKey)
        {
            DESCryptoServiceProvider des 
= new DESCryptoServiceProvider();
            
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);

            
//建立加密对象的密钥和偏移量 
            
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法 
            
//使得输入密码必须输入英文文本 
            des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
            des.IV 
= ASCIIEncoding.ASCII.GetBytes(sKey);
            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);
            }
            ret.ToString();
            
return ret.ToString();
        }
        
/// <summary>
        
/// 解密
        
/// </summary>
        
/// <param name="pToDecrypt"></param>
        
/// <param name="sKey"></param>
        
/// <returns></returns>
        public string Decrypt(string pToDecrypt, string sKey)
        {
                DESCryptoServiceProvider des 
= new DESCryptoServiceProvider();

                
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
                
for (int x = 0; x < pToDecrypt.Length / 2; x++)
                {
                    
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 22), 16));
                    inputByteArray[x] 
= (byte)i;
                }

                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();

                StringBuilder ret 
= new StringBuilder();

                
return System.Text.Encoding.Default.GetString(ms.ToArray());
        }
详见http://msdn.microsoft.com/zh-cn/community/system.security.cryptography.descryptoserviceprovider.aspx

相关文章:

  • 2021-10-31
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
  • 2021-12-21
  • 2021-12-19
  • 2021-07-01
猜你喜欢
  • 2022-02-21
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2021-10-01
相关资源
相似解决方案