DES加密字符串,DES解密字符串,DES加密文件,DES解密文件,MD5 Encrypt 16bit,MD5 Decrypt 16bit

加密解密公共类

  /// <summary>
    /// 加解密工具包
    /// 作者:fgx
    /// 2007-8-2
    /// </summary>
    public class EncryptUtils
    {

        #region 暴露的属性





        private static readonly string _PasswordString = "79350012";
        /// <summary>
        /// 秘密只能为八位,不符合八位要求的,就默认取默认秘密进行加解密
        /// </summary>
        //[DefaultValue("newtouch"), Description("当页显示最大条数"), Category("NT")]
        //public static string PasswordString
        //{
        //    get { return _PasswordString; }
        //    set 
        //    {
        //        if (value.Length == 8)
        //            _PasswordString = value;
        //    }
        //}
        #endregion


        #region 私有成员
         /// <summary>
         /// 输入字符串





         /// </summary>
         private string inputString=null;
         /// <summary>
         /// 输出字符串





         /// </summary>
         private string outString=null;
         /// <summary>
         /// 输入文件路径
         /// </summary>
         private string inputFilePath=null;
         /// <summary>
         /// 输出文件路径
         /// </summary>
         private string outFilePath=null;
         /// <summary>
         /// 加密密钥
         /// </summary>
         private string encryptKey=null;
         /// <summary>
         /// 解密密钥
         /// </summary>
         private string decryptKey=null;
         /// <summary>
         /// 提示信息
         /// </summary>
         private string noteMessage=null;
         #endregion

         #region 公共属性





         /// <summary>
         /// 输入字符串





         /// </summary>
         public string InputString
         {
         get{return inputString;}
         set{inputString=value;}
         }
         /// <summary>
         /// 输出字符串





         /// </summary>
         public string OutString
         {
         get{return outString;}
         set{outString=value;}
         }
         /// <summary>
         /// 输入文件路径
         /// </summary>
         public string InputFilePath
         {
         get{return inputFilePath;}
         set{inputFilePath=value;}
         }
         /// <summary>
         /// 输出文件路径
         /// </summary>
         public string OutFilePath
         {
         get{return outFilePath;}
         set{outFilePath=value;}
         }
         /// <summary>
         /// 加密密钥
         /// </summary>
         public string EncryptKey
         {
         get{return encryptKey;}
         set{encryptKey=value;}
         }
         /// <summary>
         /// 解密密钥
         /// </summary>
         public string DecryptKey
         {
         get{return decryptKey;}
         set{decryptKey=value;}
         }
         /// <summary>
         /// 错误信息
         /// </summary>
         public string NoteMessage
         {
         get{return noteMessage;}
         set{noteMessage=value;}
         }
         #endregion
         
        #region 构造函数





        public EncryptUtils()
         {
            //
            // TODO: 在此处添加构造函数逻辑
            //
         }
         #endregion

         #region DES加密字符串





        /// <summary>
        /// 加密字符串





        /// 注意:密钥必须为8位





        /// </summary>
        /// <param name="strText">字符串</param>
        /// <param name="encryptKey">密钥</param>
        public void DesEncrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0, 8));
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(this.inputString);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                this.outString = Convert.ToBase64String(ms.ToArray());
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message;
                System.Console.Write(error.Message);
            }
        }
        #endregion

        #region DES解密字符串





        /// <summary>
        /// 解密字符串





        /// </summary>
        /// <param name="this.inputString">加了密的字符串</param>
        /// <param name="decryptKey">密钥</param>
        public void DesDecrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            byte[] inputByteArray = new Byte[this.inputString.Length];
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                inputByteArray = Convert.FromBase64String(this.inputString);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                System.Text.Encoding encoding = new System.Text.UTF8Encoding();
                this.outString = encoding.GetString(ms.ToArray());
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message;
            }
        }
        #endregion

        #region DES加密文件
        /// <summary>
        /// DES加密文件
        /// </summary>
        /// <param name="this.inputFilePath">源文件路径</param>
        /// <param name="this.outFilePath">输出文件路径</param>
        /// <param name="encryptKey">密钥</param>
        public void FileDesEncrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0, 8));
                FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
                FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                fout.SetLength(0);
                //Create variables to help with read and write.
                byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
                long rdlen = 0; //This is the total number of bytes written.
                long totlen = fin.Length; //This is the total length of the input file.
                int len; //This is the number of bytes to be written at a time.
                DES des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);

                //Read from the input file, then encrypt and write to the output file.
                while (rdlen < totlen)
                {
                    len = fin.Read(bin, 0, 100);
                    encStream.Write(bin, 0, len);
                    rdlen = rdlen + len;
                }

                encStream.Close();
                fout.Close();
                fin.Close();
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message.ToString();
            }
        }
        #endregion

        #region DES解密文件
        /// <summary>
        /// 解密文件
        /// </summary>
        /// <param name="this.inputFilePath">加密了的文件路径</param>
        /// <param name="this.outFilePath">输出文件路径</param>
        /// <param name="decryptKey">密钥</param>
        public void FileDesDecrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
                FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                fout.SetLength(0);
                //Create variables to help with read and write.
                byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
                long rdlen = 0; //This is the total number of bytes written.
                long totlen = fin.Length; //This is the total length of the input file.
                int len; //This is the number of bytes to be written at a time.
                DES des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);


                //Read from the input file, then encrypt and write to the output file.
                while (rdlen < totlen)
                {
                    len = fin.Read(bin, 0, 100);
                    encStream.Write(bin, 0, len);
                    rdlen = rdlen + len;
                }

                encStream.Close();
                fout.Close();
                fin.Close();
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message.ToString();
            }
        }
        #endregion

        #region MD5 Encrypt 16bit
        /// <summary>
        /// MD5 Encrypt 16bit
        /// 加密
        /// </summary>
        /// <param name="pToEncrypt">要加密的字符串</param>
        /// <param name="sKey">密码</param>
        public string MD5Encrypt16(string pToEncrypt, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
            byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt); 
            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();
            //this.OutString = ret.ToString();
            return ret.ToString();  
        }
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="pToEncrypt">原始字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string MD5Encrypt16(string pToEncrypt)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
            des.Key = ASCIIEncoding.ASCII.GetBytes(_PasswordString);
            des.IV = ASCIIEncoding.ASCII.GetBytes(_PasswordString);
            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();
            //this.OutString = ret.ToString();
            return ret.ToString();
        }
        #endregion

        #region MD5 Decrypt 16bit
        /// <summary>
        /// MD5 Decrypt 16bit
        /// 解密
        /// </summary>
        /// <param name="pToDecrypt">要解密的字符串</param>
        /// <param name="sKey">密码</param>
        public string MD5Decrypt16(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  *  2,  2),  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();
            //this.OutString=System.Text.Encoding.Default.GetString(ms.ToArray());      
            return  System.Text.Encoding.Default.GetString(ms.ToArray());    
        }
        /// <summary>
        /// MD5解密
        /// </summary>
        /// <param name="pToDecrypt">带密码的字符串</param>
        /// <returns>解密后的字符串</returns>
        public static string MD5Decrypt16(string pToDecrypt)
        {
            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 * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }
            des.Key = ASCIIEncoding.ASCII.GetBytes(_PasswordString);
            des.IV = ASCIIEncoding.ASCII.GetBytes(_PasswordString);
            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();
            //this.OutString=System.Text.Encoding.Default.GetString(ms.ToArray());      
            return System.Text.Encoding.Default.GetString(ms.ToArray());
        }
        #endregion



    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伴之则安博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值