DES 加密解密



/// <summary>
         /// 对字符串进行DES加密
        /// </summary>
         /// <param name="encryptString">将要加密的字符串</param>
         /// <param name="encryptKey">密钥值(需为8位字符串)</param>
        /// <param name="ivkey">初始化向量</param>
        /// <returns></returns>
        public  string EncryptDES(string encryptString, string encryptKey, string ivkey)
         {
             byte[] data = Encoding.ASCII.GetBytes(encryptString);
             DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
             DES.Key = ASCIIEncoding.ASCII.GetBytes(encryptKey);
             DES.IV = ASCIIEncoding.ASCII.GetBytes(ivkey);
             MemoryStream ms = new MemoryStream();  //创建其支持存储区为内存的流。
             CryptoStream cs = new CryptoStream(ms, DES.CreateEncryptor(), CryptoStreamMode.Write);//将数据流连接到加密转换流
             cs.Write(data, 0, data.Length);
             cs.FlushFinalBlock();  //用缓冲区的当前状态更新基础数据源或储存库,随后清除缓
             StringBuilder ret = new StringBuilder();
             foreach (byte b in ms.ToArray())
             {
                 ret.AppendFormat("{0:X2}", b);
             }
             return ret.ToString();
 
         }

        /// <summary>
        /// 对字符串进行DES解密
        /// </summary>
        /// <param name="decryptString">将要解密的字符串</param>
        /// <param name="decryptKey">密钥值(需为8位字符串)</param>
        /// <param name="ivkey">初始化向量</param>
        /// <returns></returns>
        public string DecryptDES(string decryptString, string decryptKey, string ivkey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

            //Put  the  input  string  into  the  byte  array 
            byte[] inputByteArray = new byte[decryptString.Length / 2];
            for (int x = 0; x < decryptString.Length; x += 2)
            {
                int i = Convert.ToInt32(decryptString.Substring(x, 2), 16);
                inputByteArray[x / 2] = (byte)i;
            }

            des.Key = ASCIIEncoding.ASCII.GetBytes(decryptKey);
            des.IV = ASCIIEncoding.ASCII.GetBytes(ivkey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 
            StringBuilder ret = new StringBuilder();
            return System.Text.Encoding.UTF8.GetString(ms.ToArray());
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值