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

base64加密出错

我想用下base64加密,但是总数出错,大家看下问题在哪里下面贴代码

private static RijndaelManaged Cryptor(string keySeed, string saltString)
        { 
            byte[] salt=UTF8Encoding.UTF8.GetBytes(saltString);
            Rfc2898DeriveBytes derivedBytes=new Rfc2898DeriveBytes(keySeed,salt,1000);
            RijndaelManaged cryptor=new RijndaelManaged();
            cryptor.KeySize=128;
            cryptor.Key=derivedBytes.GetBytes(16);
            cryptor.IV=derivedBytes.GetBytes(16);
            return cryptor;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="clearText"></param>
        /// <param name="keySeed"></param>
        /// <param name="salt"></param>
        /// <returns></returns>
        public static string EncyptToBase64(string clearText, string keySeed, string salt)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                using (ICryptoTransform encryptor = Cryptor(keySeed, salt).CreateDecryptor())
                {
                    using (CryptoStream encrypt = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                    {
                        byte[] data = new UTF8Encoding(false).GetBytes(clearText);
                        encrypt.Write(data, 0, data.Length);
                        encrypt.Close();
                        return Convert.ToBase64String(ms.ToArray());
                    }
                }
            }
        }

加密主程序,using 引用添加正确的

cookie.Value = EncyptToBase64("my", "password", this.Request.UserHostAddress);

使用加密函数
运行之后它总是在encrypt.Close();   报错为Length of the data to decrypt is invalid.
大家来看下这是什么原因 --------------------编程问答-------------------- 加密解密参考:http://topic.csdn.net/u/20090505/14/792716f4-f0d2-490a-9b0f-c215c07b3dd7.html
你的这个错误 应该是调用方法错了,你调用的解密的方法 才会出现 这样的错误
Length of the data to decrypt is invalid. 的意思是:数据解密的长度是无效的。
--------------------编程问答--------------------
public static string Base64Encode(this string encryptString)
        {
            byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(encryptString);
            return Convert.ToBase64String(encbuff);
        }
        public static string Base64Decode(this string decryptString)
        {
            byte[] decbuff = Convert.FromBase64String(decryptString);
            return System.Text.Encoding.UTF8.GetString(decbuff);
        }
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,