加解密流不支持查找, cstream.Length 这一句在查找其长度,所以有错。
解决方案 »
- 用C#2005 开发教学管理系统用什么书好?
- 打开关闭窗体
- 请问那位知道Microsoft.Office.Interop.word.dll/Microsoft.Office.Interop.PowerPoint.dll哪里能下载
- .NET 如何制作自动播放图片的效果
- c#.net中怎样用DataGrid控件显示Sql Server数据库中的内容呢
- 怎么样实现远程关机
- 求一正则表达式,把html文件中的字符串分割开来
- 把数据库里的图片库动态生成缩略图,提示内存不足
- VS2008登录页面的验证码
- windows验证的数据库连接字符串怎么写?
- CSDN的blog出问题了,本来还很相信CSDN的呢,该死!
- 窗体之间的拖放问题????很急欧,给个思路也行!
static String Encrypt(String pwd) {
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();//des进行加密
PasswordDeriveBytes db = new PasswordDeriveBytes(pwd, null);//产生key
byte[] key = db.GetBytes(8);
MemoryStream ms = new MemoryStream();//存储加密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateEncryptor(key, key),CryptoStreamMode.Write);
byte[] data = Encoding.Unicode.GetBytes(pwd);//取到密码的字节流
cs.Write(data, 0, data.Length);//进行加密
cs.FlushFinalBlock();
byte[] res = ms.ToArray();//取加密后的数据
return Encoding.Unicode.GetString(res);//转换到字符串返回
}
解密:
static String Decrypt(String pwd, String data) {
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
PasswordDeriveBytes db = new PasswordDeriveBytes(pwd, null);//产生key
byte[] key = db.GetBytes(8);
MemoryStream ms = new MemoryStream();//存储解密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateDecryptor(key, key),CryptoStreamMode.Write);
byte[] databytes = Encoding.Unicode.GetBytes(data);//取到加密后的数据的字节流
cs.Write(databytes, 0, databytes.Length);//解密数据
cs.FlushFinalBlock();
byte[] res = ms.ToArray();
return Encoding.Unicode.GetString(res);//返回解密后的数据
}
fsIn = File.Open(tempfile,FileMode.Open,FileAccess.Read);
transform = symm.CreateDecryptor();
cstream = new CryptoStream(fsIn,transform,
CryptoStreamMode.Read);StreamReader sr = new StreamReader(cstream);
Console.WriteLine("decrypted file text: " + sr.ReadToEnd());
fsIn.Close();
}
}
}一个片断,拷的,试试?
现在有一个A.gif文件,按"加密"按钮就把A.gif加密起来变成B.gif.
按"解密"按钮就把B.gif文件解密为C.gif文件请问各位高手..在webform只怎样实现..最好有实例.....
现在有一个A.gif文件,按"加密"按钮就把A.gif加密起来变成B.gif.
按"解密"按钮就把B.gif文件解密为C.gif文件
加密:
FileStream fsIn = File.Open(file,FileMode.Open,FileAccess.Read);
FileStream fsOut = File.Open(tempfile, FileMode.Create,FileAccess.Write);SymmetricAlgorithm symm = new RijndaelManaged();
ICryptoTransform transform = symm.CreateEncryptor();
CryptoStream cstream = new CryptoStream(fsOut,transform,CryptoStreamMode.Write);BinaryReader br = new BinaryReader(fsIn);
cstream.Write(br.ReadBytes((int)fsIn.Length),0,(int)fsIn.Length);
cstream.FlushFinalBlock();
cstream.Close();
fsIn.Close();
fsOut.Close();解密:
fsIn = File.Open(tempfile,FileMode.Open,FileAccess.Read);
transform = symm.CreateDecryptor();
cstream = new CryptoStream(fsIn,transform,CryptoStreamMode.Read);
br = new BinaryReader(fsIn);
cstream.Read(br.ReadBytes((int)fsIn.Length),0,(int)fsIn.Length);
FileStream fs = new FileStream(desfile,FileMode.Create,FileAccess.Write);
fs.Write(br.ReadBytes((int)cstream.Length), 0, (int)cstream.Length);
fs.Close();
fsIn.Close();
cstream.Close();以上代码加密可以.在解密时发生一个错误. 错误在 行248流不支持查找。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NotSupportedException: 流不支持查找。源错误:
行 246: FileStream fs = new FileStream(desfile,FileMode.Create,FileAccess.Write);
行 247:
行 248: fs.Write(br.ReadBytes((int)cstream.Length), 0, (int)cstream.Length); //错误在这一行.
行 249: fs.Close();
行 250: fsIn.Close();