请看代码:
就是一个类实现字符串的加密和解密
但是解密总要出错,提是要解密的数据无效
/// <summary>
/// 字符串加密
/// </summary>
/// <param name="encrypt">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
[Obsolete("next version will remove",false)]
public static string _encryptString(string encrypt)
{
try
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//8维
//byte[] iv = Encoding.UTF8.GetBytes("googlego");
byte[] data = Encoding.UTF8.GetBytes(encrypt);
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(keys,keys), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
ms.Close();
ms.Dispose();
cs.Close();
cs.Dispose();
//return Encoding.UTF8.GetString(ms.ToArray());
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return encrypt;
}
}
/// <summary>
/// 字符串解密
/// </summary>
/// <param name="decrypt">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
[Obsolete("this method will come true next version", false)]
public static string _decryptString(string decrypt)
{
try
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//Default,ASCII编码都不行,
byte[] data = Encoding.UTF8.GetBytes(decrypt);
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desc.CreateDecryptor(keys,keys), CryptoStreamMode.Write);
cs.Read(data, 0, data.Length);
cs.FlushFinalBlock();//这里出现异常,是-Length否“cs.Length”引发了//System.NotSupportedException”类型的异常 long {System.NotSupportedException} "流不支持查找" ms.Close();
ms.Dispose();
cs.Close();
cs.Dispose();
//return Encoding.UTF8.GetString(ms.ToArray());//用这个也不行
return Convert.ToBase64String(ms.ToArray());
}
catch//(Exception exp)
{
return decrypt;
}
}
就连MSDN(VS2005自带)代码,也会出现异常.
前台调用方法:
private void encrypt_Click(object sender, EventArgs e)
{
MessageBox.Show(endeString._encryptString("google"));//显示加密字符串,endeString是加密解密类
} private void decrypt_Click(object sender, EventArgs e)
{
MessageBox.Show(endeString._decryptString(endeString._encryptString("google")));
}
就是一个类实现字符串的加密和解密
但是解密总要出错,提是要解密的数据无效
/// <summary>
/// 字符串加密
/// </summary>
/// <param name="encrypt">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
[Obsolete("next version will remove",false)]
public static string _encryptString(string encrypt)
{
try
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//8维
//byte[] iv = Encoding.UTF8.GetBytes("googlego");
byte[] data = Encoding.UTF8.GetBytes(encrypt);
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(keys,keys), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
ms.Close();
ms.Dispose();
cs.Close();
cs.Dispose();
//return Encoding.UTF8.GetString(ms.ToArray());
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return encrypt;
}
}
/// <summary>
/// 字符串解密
/// </summary>
/// <param name="decrypt">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
[Obsolete("this method will come true next version", false)]
public static string _decryptString(string decrypt)
{
try
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//Default,ASCII编码都不行,
byte[] data = Encoding.UTF8.GetBytes(decrypt);
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desc.CreateDecryptor(keys,keys), CryptoStreamMode.Write);
cs.Read(data, 0, data.Length);
cs.FlushFinalBlock();//这里出现异常,是-Length否“cs.Length”引发了//System.NotSupportedException”类型的异常 long {System.NotSupportedException} "流不支持查找" ms.Close();
ms.Dispose();
cs.Close();
cs.Dispose();
//return Encoding.UTF8.GetString(ms.ToArray());//用这个也不行
return Convert.ToBase64String(ms.ToArray());
}
catch//(Exception exp)
{
return decrypt;
}
}
就连MSDN(VS2005自带)代码,也会出现异常.
前台调用方法:
private void encrypt_Click(object sender, EventArgs e)
{
MessageBox.Show(endeString._encryptString("google"));//显示加密字符串,endeString是加密解密类
} private void decrypt_Click(object sender, EventArgs e)
{
MessageBox.Show(endeString._decryptString(endeString._encryptString("google")));
}
解决方案 »
- C# 如何在网页上点击链接打开服务器端的chm文件
- 系统启动后把鼠标键盘锁死直到指定的软件运行好后才解锁
- C# winform如何根据数据库生成饼状图?
- ★★★★★正则问题★★★★★★
- 如何在C#中调用SQLDMO对数据库进行update,insert等操作呢
- 各位不通过MarshalByRefObject,怎么垮应用程序域访问对象
- ctrl+enter模拟按钮的click事件,但同时也实现了richTextBox的换行。(不需要换行)
- 数码相机编程
- 模式窗口怎么刷新
- 数据库菜鸟提问 怎么将数据库中A+B这种项帮定到datagrid中
- 买书求推荐
- 有没有人正在看《C#入门经典》的?一起交流一下
需要这个培训视频的朋友请联系 QQ 936652114
{
byte[] byteskey= ASCIIEncoding.ASCII.GetBytes(key64);
byte[] bytesiv= ASCIIEncoding.ASCII.GetBytes(iv64);
byte[] bytesCipher = Convert.FromBase64String(cipher);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(bytesCipher);
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byteskey, bytesiv), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
string plainText = sr.ReadToEnd();
sr.Close();
cs.Close();
ms.Close();
return plainText;
}
{
byte[] byteskey= ASCIIEncoding.ASCII.GetBytes(key64);
byte[] bytesiv= ASCIIEncoding.ASCII.GetBytes(iv64);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byteskey, bytesiv), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(plain);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
return (Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length));
}
//+ base {"流不支持查找。"} System.SystemException {System.NotSupportedException}
报错啊
能帮我看看一楼的代码吗?我再跟踪看看key和iv是不是一样的哈
{
MemoryStream ms = new MemoryStream();
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(encStream);
sw.Write(PlainText);
sw.Close();
encStream.Close();
string val=Convert.ToBase64String( ms.ToArray());
ms.Close();
return val;
} public string Decrypt(string CypherText, SymmetricAlgorithm key)
{
byte[] bytes = Convert.FromBase64String(CypherText);
MemoryStream ms = new MemoryStream(bytes);
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(encStream);
string val = sr.ReadToEnd();
sr.Close();
encStream.Close();
ms.Close();
return val;
} private void button1_Click(object sender, EventArgs e)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
string buffer=Encrypt(textBox1.Text,des);
label1.Text = Decrypt(buffer, des);
}
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//8维
MemoryStream ms = new MemoryStream();
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(keys,keys), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(encStream);
sw.Write(PlainText);
sw.Close();
encStream.Close();
string val=Convert.ToBase64String( ms.ToArray());
ms.Close();
return val;
} public string Decrypt(string CypherText, SymmetricAlgorithm key)
{
byte[] keys = Encoding.UTF8.GetBytes("iloveyou");//8维
byte[] bytes = Convert.FromBase64String(CypherText);
MemoryStream ms = new MemoryStream(bytes);
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(keys,keys), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(encStream);
string val = sr.ReadToEnd();
sr.Close();
encStream.Close();
ms.Close();
return val;
} private void button1_Click(object sender, EventArgs e)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
string buffer=Encrypt(textBox1.Text,des);
label1.Text = Decrypt(buffer, des);
}