DES加密解密

2015-12-20 04:38:40  访问(1398) 赞(0) 踩(0)


相关下载:百度网盘  SlowX.DesEncryptOperApp[code]  SlowX.DesEncryptOperApp[release]     



  • 
    
    
            #region DES 加密
    
            /// <summary>
            /// DES 加密
            /// </summary>
            /// <param name="EncryptKey"></param>
            /// <param name="EncryptKeyIV"></param>
            /// <param name="str">明文</param>
            /// <param name="_encoding"></param>
            /// <returns></returns>
            public static string DESEncrypt
                (
                    string EncryptKey,
                    string EncryptIV,
                    string str,
                    System.Text.Encoding _encoding 
                )
            {
                string theResult = null;
    
                MemoryStream msEncrypt = null;
                CryptoStream csEncrypt = null;
    
                try
                {
    
                    DES desValue = new DESCryptoServiceProvider();
    
                    byte[] ivb = Encoding.ASCII.GetBytes(EncryptIV);
                    byte[] keyb = Encoding.ASCII.GetBytes(EncryptKey);//得到加密密钥
    
                    byte[] toEncrypt = _encoding.GetBytes(str);//得到要加密的内容
    
                    byte[] encrypted;
    
                    ICryptoTransform encryptor = desValue.CreateEncryptor(keyb, ivb);
    
                    msEncrypt = new MemoryStream();
    
                    csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
    
                    csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
    
                    csEncrypt.FlushFinalBlock();
    
                    encrypted = msEncrypt.ToArray();
    
                    theResult= _encoding.GetString(encrypted);
                }
                catch (Exception err)
                {
                    throw err;
                }
                finally
                {
                    if (csEncrypt != null)
                    {
                        csEncrypt.Close();
                    }
    
                    if (msEncrypt != null)
                    {
                        msEncrypt.Close();
                    }
    
                    csEncrypt = null;
                    msEncrypt = null;
                }
    
                return theResult;
    
            }
    
            #endregion DES 加密
    
            #region DES 解密
    
            /// <summary>
            /// DES 解密
            /// </summary>
            /// <param name="EncryptKey"></param>
            /// <param name="EncryptKeyIV"></param>
            /// <param name="str"></param>
            /// <param name="_encoding"></param>
            /// <returns></returns>
            public static string DESDecrypt
                (
                    string EncryptKey,
                    string EncryptIV,
                    string str,
                    System.Text.Encoding _encoding
                )
            {
                string theResult = null;
    
                MemoryStream msDecrypt = null;
                
                CryptoStream csDecrypt = null;
    
                try
                {
                    DES desValue = new DESCryptoServiceProvider();
    
                    byte[] ivb = Encoding.ASCII.GetBytes(EncryptIV);
                    byte[] keyb = Encoding.ASCII.GetBytes(EncryptKey);
    
                    byte[] toDecrypt = _encoding.GetBytes(str);
                    byte[] deCrypted = new byte[toDecrypt.Length];
                    ICryptoTransform deCryptor = desValue.CreateDecryptor(keyb, ivb);
                    msDecrypt = new MemoryStream(toDecrypt);
                    csDecrypt = new CryptoStream(msDecrypt, deCryptor, CryptoStreamMode.Read);
    
                    csDecrypt.Read(deCrypted, 0, deCrypted.Length);
    
                    theResult = _encoding.GetString(deCrypted);
                }
                catch (Exception err)
                {
                    throw err;
                }
                finally
                {
                    if (csDecrypt != null)
                    {
                        csDecrypt.Close();
                    }
    
                    if (msDecrypt != null)
                    {
                        msDecrypt.Close();
                    }
    
                    csDecrypt = null;
                    msDecrypt = null;
                }
    
                return theResult;
            }
    
            #endregion DES 解密        
    
    
    
            /// <summary>
            /// 字符串转成byte[]数组的String
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string StringToByteArrayString(string str)
            {
                if (str == null || str.Length == 0)
                    return "";
    
                byte[] byteArray = Encoding.Default.GetBytes(str);
    
                return ByteArrayToString(byteArray);
            }
    
            /// <summary>
            /// 字符串转成byte[]数组的String
            /// </summary>
            /// <param name="str"></param>
            /// <param name="_encoding"></param>
            /// <returns></returns>
            public static string StringToByteArrayString(string str, System.Text.Encoding _encoding)
            {
                if (str == null || str.Length == 0)
                    return "";
    
                if (_encoding == null)
                {
                    throw new Exception
                       (
                           "方法:"
                           + MethodBase.GetCurrentMethod().ReflectedType.FullName
                           + " "
                           + MethodBase.GetCurrentMethod().ToString()
                           + " 发生异常:"
                           + "传入参数:System.Text.Encoding _encoding 为null。"
                       );
                }
    
                byte[] byteArray = _encoding.GetBytes(str);
    
                return ByteArrayToString(byteArray);
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="byteArray"></param>
            /// <returns></returns>
            public static string ByteArrayToString(byte[] byteArray)
            {
                if (byteArray == null)
                {
                    throw new Exception
                       (
                           "方法:"
                           + MethodBase.GetCurrentMethod().ReflectedType.FullName
                           + " "
                           + MethodBase.GetCurrentMethod().ToString()
                           + " 发生异常:"
                           + "传入参数:byte[] byteArray 为null。"
                       );
                }
    
                StringBuilder theResult = new StringBuilder();
    
                foreach (byte b in byteArray)
                {
                    theResult.Append(b.ToString().PadLeft(3, '0'));
                }
    
                return theResult.ToString();
            }
    
            /// <summary>
            /// 字符串转成byte[]数组
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static byte[] StringToByteArray(string str)
            {
                if (str == null || str.Length == 0)
                    return null;
    
                int iLen = str.Length;
    
                if (iLen % 3 != 0)
                {
                    throw new Exception
                       (
                           "方法:"
                           + MethodBase.GetCurrentMethod().ReflectedType.FullName
                           + " "
                           + MethodBase.GetCurrentMethod().ToString()
                           + " 发生异常:"
                           + "iLen % 3 != 0,传入的字符串不是合理的byte[]值。"
                       );
                }
    
                int iArrayLen = iLen / 3;
                byte[] theResult = new byte[iArrayLen];
    
                string strItem = string.Empty;
                byte bItem = 1;
    
                for (int i = 0; i < iArrayLen; ++i)
                {
                    strItem = str.Substring(i * 3, 3);
    
                    bItem = byte.Parse(strItem);
    
                    theResult[i] = bItem;
    
                }
    
                return theResult;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string ByteArrayStringToString(string str)
            {
                byte[] bArray = StringToByteArray(str);
    
                return Encoding.Default.GetString(bArray);
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="str"></param>
            /// <param name="_encoding"></param>
            /// <returns></returns>
            public static string ByteArrayStringToString(string str, System.Text.Encoding _encoding)
            {
                if (_encoding == null)
                {
                    throw new Exception
                       (
                           "方法:"
                           + MethodBase.GetCurrentMethod().ReflectedType.FullName
                           + " "
                           + MethodBase.GetCurrentMethod().ToString()
                           + " 发生异常:"
                           + "传入参数:System.Text.Encoding _encoding 为null。"
                       );
                }
     
                byte[] bArray = StringToByteArray(str);
    
                return _encoding.GetString(bArray);
            }
    
    
    

标签:DES加密解密 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)