DES 加密/解密整理

  DES加密/解密整理
    public class DESEncryptor
    {
        #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 DESEncryptor()
        {
            //
            // 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;
            }
        }
        #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
        ///<summary>
        /// MD5 Encrypt
        ///</summary>
        ///<param name="strText">text</param>
        ///<returns>md5 Encrypt string</returns>
        public void MD5Encrypt()
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(this.inputString));
            this.outString = System.Text.Encoding.Default.GetString(result);
        }
        #endregion
 
        // 加密
        public string EncryptString(string value)
        {
            this.InputString = value;
            this.OutString = "";
            this.DesEncrypt();
            return this.OutString;
        }
 
        // 解密
        public string DecryptString(string value)
        {
            this.InputString = value;
            this.OutString = "";
            this.DesDecrypt();
            return this.OutString;
        }
 
 
    }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值