当前位置:编程学习 > C#/ASP.NET >>

C#加密解密问题(急)(汉字乱码)


我想将一个文件里面的数据读取出来然后加密存放在另个一个文件里面,但加密是成功了。最后将加密后的数据再解密的时候,所有汉字就全部成了问号或乱码了!!!请各位大哥大姐帮忙看一下代码:
        ///   <summary>   
        ///   加密   
        ///   </summary>   
        ///   <param   name="strString"></param>   
        ///   <param   name="strKey"></param>   
        ///   <param   name="encoding"></param>   
        ///   <returns></returns>   
        public static string Encrypt3DES(string strString, string strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
            DES.Key = hashMD5.ComputeHash(Encoding.ASCII.GetBytes(strKey));
            DES.Mode = CipherMode.ECB;
            ICryptoTransform DESEncrypt = DES.CreateEncryptor();
            byte[] Buffer = Encoding.ASCII.GetBytes(strString);
            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }

        ///   <summary>   
        ///   解密   
        ///   </summary>   
        ///   <param   name="strString"></param>   
        ///   <param   name="strKey"></param>   
        ///   <returns></returns>   
        public static string Decrypt3DES(string strString, string strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
            DES.Key = hashMD5.ComputeHash(Encoding.ASCII.GetBytes(strKey));
            DES.Mode = CipherMode.ECB;
            ICryptoTransform DESDecrypt = DES.CreateDecryptor();
            string result = "";
            try
            {
                byte[] Buffer = Convert.FromBase64String(strString);
                result = Encoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
            }
            catch (System.Exception e)
            {
                throw (new System.Exception("null", e));
            }
            return result;
        } --------------------编程问答-------------------- 编码格式问题
BitConverter.ToString

Encoding.UTF8.GetString --------------------编程问答-------------------- ASCII字符集不支持汉字,在你编码时汉字信息已经全丢掉了...

改用Encoding.UTF8或其他支持汉字的字符集编码... --------------------编程问答--------------------
引用 2 楼 vrhero 的回复:
ASCII字符集不支持汉字,在你编码时汉字信息已经全丢掉了...

改用Encoding.UTF8或其他支持汉字的字符集编码...




学习了,谢谢。 --------------------编程问答-------------------- Encoding.GetEncoding(936) --------------------编程问答--------------------
引用 2 楼 vrhero 的回复:
ASCII字符集不支持汉字,在你编码时汉字信息已经全丢掉了...

改用Encoding.UTF8或其他支持汉字的字符集编码...
--------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
编码格式问题
BitConverter.ToString

Encoding.UTF8.GetString

楼上说的对 --------------------编程问答-------------------- 关注,学习一下! --------------------编程问答-------------------- 围观。。。 --------------------编程问答-------------------- 学习了。。。 --------------------编程问答--------------------
引用 2 楼 vrhero 的回复:
ASCII字符集不支持汉字,在你编码时汉字信息已经全丢掉了...

改用Encoding.UTF8或其他支持汉字的字符集编码...

正解 --------------------编程问答-------------------- 编码格式问题
BitConverter.ToString

Encoding.UTF8.GetString
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,