关于文件流加密,请大师们指点迷津。。
我是通过SQL2008的FILESTREAM来管理文件,以下代码写入文件是没有错的。。 如果我是在写入之前加密呢?文件格式可能是.RAR .DOC .TXT .PDF 请大师们不宁赐教!!--------------------编程问答-------------------- 我觉得文件格式你可以在保存的时候就可以获取的到。
protected void btnWrite_Click(object sender, EventArgs e)
{
string conn = ConfigurationManager.ConnectionStrings["FileStream"].ConnectionString;
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "SELECT top 1 FSData.PathName(), " +
"GET_FILESTREAM_TRANSACTION_CONTEXT() FROM FileStreamTable ";
SqlTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
command.Transaction = transaction;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string path = reader.GetString(0);
object obj = reader.GetValue(1);
SqlFileStream stream = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Write, FileOptions.SequentialScan, 0);
//SqlFileStream stream = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Write);
Stream s = new FileStream(@"E:\FileStreamTest\text.txt", FileMode.Open);
s.CopyTo(stream);
stream.Close();
s.Close();
}
}
transaction.Commit();
}
}
在写入的时候加密,然后在获取的时候在解密一下。 --------------------编程问答--------------------
public static byte[] EncryptString(byte[] plainTextArray, byte[] Key, byte[] IV)
{
// 建立一个MemoryStream,这里面存放加密后的数据流
MemoryStream mStream = new MemoryStream();
// 使用MemoryStream 和key、IV新建一个CryptoStream 对象
CryptoStream cStream = new CryptoStream(mStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
// 将加密后的字节流写入到MemoryStream
cStream.Write(plainTextArray, 0, plainTextArray.Length);
//把缓冲区中的最后状态更新到MemoryStream,并清除cStream的缓存区
cStream.FlushFinalBlock();
// 把解密后的数据流转成字节流
byte[] ret = mStream.ToArray();
// 关闭两个streams.
cStream.Close();
mStream.Close();
return ret;
}
我调用这个方法,会产生2个流;MemoryStream mStream ,SqlFileStream stream 。会报:无法执行该事务操作,因为有挂起请求正在此事务上运行。的错误。。 --------------------编程问答--------------------
现在文件格式不成问题。。 写入之后都是文件类型。。读取出来加上类型就可以了。。。 主要是加密这块,头疼啊。。
补充:.NET技术 , ASP.NET