Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.net创建加密文件容器_C#_.net_Asp.net Mvc_Encryption - Fatal编程技术网

C# 如何使用.net创建加密文件容器

C# 如何使用.net创建加密文件容器,c#,.net,asp.net-mvc,encryption,C#,.net,Asp.net Mvc,Encryption,我需要在asp net mvc应用程序中创建一个加密文件容器 我找到了这个程序 http://www.michaelcodes.net/post/TrueCrypt-6a-System-Encryption-Benchmarks.aspx 但它应该与.net集成 有没有办法使用.NET库来实现这一点?我还没有找到答案 功能: 系统需要能够从中添加和删除文件 容器,并在请求时读取内容。但是所有的 操作需要在系统内部完成 C#实施 您可以将文件放入自定义类列表中: [Serializable]

我需要在asp net mvc应用程序中创建一个加密文件容器

我找到了这个程序

http://www.michaelcodes.net/post/TrueCrypt-6a-System-Encryption-Benchmarks.aspx
但它应该与.net集成

有没有办法使用.NET库来实现这一点?我还没有找到答案

功能:

  • 系统需要能够从中添加和删除文件 容器,并在请求时读取内容。但是所有的 操作需要在系统内部完成
  • C#实施

您可以将文件放入自定义类列表中:

[Serializable]
public class FileEntry
{
 public string FileName {get;set;}
 public string FileRelativePath {get;set;}
 public byte[] FileContents {get;set;}
}
将文件添加到列表中:

List<FileEntry> files = new  List<FileEntry> ();

for .......
{
    files.Add(new FileEntry()
    {
        FileName  = .....,
        FileRelativePath = .....,
        FileContents = File.ReadAllBytes(......),
    };
}
现在,您的结构为byte[],您可以通过以下简单方式轻松加密它们:

filesBytes = Encrypt(filesBytes , ......);
然后将加密的字节保存到具有自定义扩展名的某个位置:

File.WriteAllBytes(".........\.....encr",filesBytes);
然后,当您要重新打开文件并读取清除数据时:

byte[] encryptedData = File.ReadAllBytes(".......\.....encr");
使用相同的算法解密内容:

byte[] clearContent = Decrypt(encryptedData, ......);
并将内容反序列化到主结构中:

BinaryFormatter ser = new BinaryFormatter();
using(MemoryStream ms = new MemoryStream(clearContent))
{
    List<FileEntry>  files = ser.Deserialize(ms) as List<FileEntry>;
}
您可以使用以下有关加密的问题:

关于二进制格式化程序:


我已经发布了这个答案:)

如果您想使用TrueCrypt,您可以在系统启动时自动装载到驱动器,然后在映射的驱动器上使用常规文件操作

如果您不想使用公共访问(对相关应用程序的外部访问)装载卷,那么您确实需要更深入的API访问

我不建议您从头开始使用自己的C#实现。要在TrueCrypt中提高安全级别,您需要技能和时间——这两者都已进入TC。如果你不同时使用这两种方法,你很容易就会面临巨大的安全风险

您可以通过导入dll简单地使用自动互操作(尽管我不能确定)。我相信TC是开源的,如果是这样的话,你可以外包一个C/C++程序员来编写一个.Net包装器——一个不需要装入卷,但只允许内部应用程序基于文件的访问的包装器

BinaryFormatter ser = new BinaryFormatter();
using(MemoryStream ms = new MemoryStream(clearContent))
{
    List<FileEntry>  files = ser.Deserialize(ms) as List<FileEntry>;
}
foreach(var file in files)
{
     File.WriteAllBytes(string.Format("........{0}...{1}",file.FileRelativePath , file.FileName), file.FileContents)
}