DES加密和解密遇到的问题

      
 static string key = "abcefghk";    //定义密钥
        /// <summary> /// 加密字符串   
        /// </summary>  
        /// <param name="str">要加密的字符串</param>  
        /// <returns>加密后的字符串</returns>  
        public static string Encrypt(string encryptString)
        {
            var keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            var keyIV = keyBytes;
            var inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            var provider = new DESCryptoServiceProvider();
            var mStream = new MemoryStream();
            var cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            var str = Convert.ToBase64String(mStream.ToArray());
            return str.Replace("+", "%2B");
        }
        public static string Decrypt(string decryptString)
        {
            var count = decryptString.Length;
            var keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            var keyIV = keyBytes;
            var inputByteArray = Convert.FromBase64String(decryptString);
            var provider = new DESCryptoServiceProvider();
            var mStream = new MemoryStream();
            var cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            return Encoding.UTF8.GetString(mStream.ToArray());
        }

注意事项:(1)定义密钥时字符串长度为4的倍数 不然在解密的时候会出现报异常 字符串长度问题

(2)字符串进行了加密后 如果字符串中有符号+  替换为   str.Replace("+", "%2B"); 原因是浏览器接收加密后的字符串 request 请求回来时会自动解密一次,+号都变为了空格 

解密 会抛出 字符串长度问题。  这两个问题让我纠结了好久  出现其他问题下次再记录

</pre><pre name="code" class="csharp">


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值