3

aspnetmvcアプリで暗号化されたファイルコンテナーを作成する必要があります。

私は仕事をするこのプログラムを見つけました

http://www.michaelcodes.net/post/TrueCrypt-6a-System-Encryption-Benchmarks.aspx

ただし、.netと統合する必要があります

.NETライブラリを使用してそれを達成する方法はありますか?方法がわかりません。

特徴:

  • システムは、このコンテナにファイルを追加および削除し、要求に応じてコンテンツを読み取ることができる必要があります。ただし、すべての操作はシステム内から実行する必要があります。
  • C#の実装
4

2 に答える 2

2

ファイルをカスタムクラスのリストに入れることができます。

[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)
}

暗号化に関する次の質問を使用できます。

.NETのシークレットを使用してバイト配列を暗号化/難読化する簡単な方法は?

そして、これはバイナリフォーマッタに関する例です。

私はこの答えを私のブログに投稿しました:)

于 2012-12-26T12:20:31.620 に答える
1

TrueCryptを使用する場合は、システムの起動時にドライブに自動的にマウントしてから、マップされたドライブで通常のファイル操作を使用できます。

パブリックアクセス(問題のアプリケーションの外部へのアクセス)でボリュームをマウントしたくない場合は、実際には、より詳細なAPIアクセスが必要になります。

独自のC#実装を最初から作成することはお勧めしません。TrueCryptでセキュリティのレベルを向上させるには、スキルと時間が必要です。どちらもTCに組み込まれています。両方を使用しないと、大きなセキュリティリスクに簡単にさらされる可能性があります。

dllをインポートすることで、自動相互運用機能を簡単に使用できる場合があります(確かではありませんが)。TCはオープンソースだと思います。そうであれば、C / C ++コーダーをアウトソーシングして.Netラッパーを作成できます。これは、ボリュームをマウントする必要はありませんが、内部アプリケーションのみのファイルベースのアクセスを許可します。

于 2012-12-26T12:29:14.577 に答える