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