gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:20:37 28 4
gpt4 key购买 nike

我需要在 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(......),
};
}

然后,使用 BinarryFormatter 将此结构转换为字节数组:

byte[] filesBytes;
BinaryFormatter ser = new BinaryFormatter();
using(MemoryStream ms = new MemoryStream())
{
ser.Serialize(ms, files);
filesBytes = ms.ToArray();
}

现在,您的结构为 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>;
}

然后,如果需要,将文件的内容写入某个位置:

foreach(var file in files)
{
File.WriteAllBytes(string.Format("........{0}...{1}",file.FileRelativePath , file.FileName), file.FileContents)
}

你可以使用这个关于加密的问题:

Easy way to encrypt/obfuscate a byte array using a secret in .NET?

this is an example关于二进制格式化程序:

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

关于c# - 如何使用 .net 创建加密文件容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com