分享

DESC加密解密

 shymi 2010-09-17
        /// <summary>
        /// 对数据进行加密
        /// </summary>
        /// <param name="encryptstring">需要加密的数据</param>
        /// <returns></returns>
        public string DESEncrypt(string encryptstring)
        {
            string strRtn;
            try
            {
                DESCryptoServiceProvider desc = new DESCryptoServiceProvider();   //des进行加密
                PasswordDeriveBytes encryptkey = new PasswordDeriveBytes(encryptstring, null);//产生key
                byte[] key = encryptkey.GetBytes(8);
                byte[] data = System.Text.Encoding.Unicode.GetBytes(encryptstring);//取到密码的字节流
                MemoryStream ms = new MemoryStream();                            //用来存储加密后的数据                           
                CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(key, key), CryptoStreamMode.Write); //进行加密
                cs.Write(data,0,data.Length );
                cs.FlushFinalBlock();                                            //用缓冲区的当前状态更新基础数据源或存储库,随后清除缓冲区
                strRtn = Convert.ToBase64String(ms.ToArray());                   //将整个流内容写入字节数组,转换到字符串返回
                return strRtn;
            }
            catch (Exception ex)
            {
                //弹出捕获的异常信息
                MessageBox.Show("错误:"+ex.Message ,"错误消息提示框",MessageBoxButtons.OKCancel,MessageBoxIcon.Error );
                return null ;
            }
        }
        /// <summary>
        /// 对数据进行解密
        /// </summary>
        /// <param name="decryptstring">需要解密的数据</param>
        /// <returns></returns>
        public string DESDecrypt(string decryptstring)
        {
            string strRtn;
            try
            {
                //定义访问数据加密标准(DES)算法的加密服务提供程序(CSP)版本的包装对象
                DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
                PasswordDeriveBytes encryptkey = new PasswordDeriveBytes(decryptstring, null);//产生key
                byte[] key = encryptkey.GetBytes(8);
                byte[] data = Convert.FromBase64String(decryptstring);
                MemoryStream ms = new MemoryStream();                            //用来存储解密后的数据                           
                CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(key, key), CryptoStreamMode.Write);
                cs.Write(data, 0, data.Length);                                  //进行解密
                cs.FlushFinalBlock();                                            //用缓冲区的当前状态更新基础数据源或存储库,随后清除缓冲区
                strRtn = System.Text.Encoding.Unicode.GetString(ms.ToArray());   //将整个流内容写入字节数组
                return strRtn;
            }
            catch (Exception ex)
            {
                //弹出捕获的异常信息
                MessageBox.Show("错误:" + ex.Message, "错误消息提示框", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
                return null;
            }
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约