加密源码是在百-度经验上找的   C# DES解密  和 C# DES加密 
在上一章的“C#如何实现DES加密算法”中建立的工程的基础上(地址为:http://jingyan.baidu.com/article/c910274bc6f50bcd371d2d10.html),在类文件EncryptDES.cs中添加如下方法:
        /// <summary>
        /// DES解密字符串
        /// </summary>
        /// <param name="decryptString">待解密的字符串</param>
        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
        public static string DecryptDES(string decryptString, string decryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                //rgbIV与rgbKey可以不一样,这里只是为了简便,读者可以自行修改
                byte[] rgbIV = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch (Exception ex)
            {
                return decryptString;
            }
        } 双击该按钮,进入代码编辑界面,添加如下代码,如图。
string en = "C#如何实现DES加密算法";
string result = EncryptDES.strEncryptDES(en, "hello,I am bianyuanhuanghun");
MessageBox.Show(result);
现在的问题是能解密 但测试后发现前3个中文字(6个字符)会出现乱码 后边都正常
情况如下图
加密密码:codeexam
密文:RuZFkVLbyIdjn02U0zCeuNod4enfBR4rjJawFgPdEC74q56fmE9kXU9umGF6MGVTr9tq5d5JpRRMU+D2M3gxbOgfJnCHeDKD
解密:}DJ1的形式中,效力仅次于宪法的是(    )。
正确解密:下列法的形式中,效力仅次于宪法的是(    )。帮忙看看乱码是怎么回事啊!

解决方案 »

  1.   

    搜“BOM” ?
      

  2.   

    你测试的流程不对,初步看起来好像还有base 64参与了,先用全00,对全00加密,结果在内存中查看,应该是//3des_encode_ecb ( , ) 
    //--triple des ecb encrypt
    //--key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    //--plain = 00 00 00 00 00 00 00 00   cipher = 8C A6 4D E9 C1 B1 23 A7 
    //
    //-----Final result --- 8C A6 4D E9 C1 B1 23 A7 
    //