0

私は C# に比較的慣れていないので、wxMaxima で設計したテキスト暗号化アルゴリズムを、Visual Studio フォームを使用して C# のバイナリ暗号化プログラムに適応させようとしています。私はバイナリ ファイルの読み取り/書き込みに慣れていないため、ファイル ストリームを読み書きしようとすると何が起こるかについての知識が不足しています。

たとえば、これまで行ってきたようにテキスト ファイルを暗号化する代わりに、実行可能ファイルまたはその他の形式のバイナリ ファイルを暗号化するとします。

ここに私が理解できないいくつかの質問があります:

  1. ファイル ストリームを開いて binaryreader を使用すると、ファイル内のすべての完全な複製が読み込まれますか? たとえば、ファイル全体を読み取り、元のファイルを削除してから、古い名前で新しいファイルを作成し、バイナリ ストリーム全体を書き戻せるようにしたいと考えています。これで元のファイルが正確に再現されますか?それとも、別の方法で説明しなければならない何らかの破損が発生するのでしょうか?

  2. これは暗号化プログラムであるため、元のファイルを削除する前に低レベルの「フォーマット」を行う機能を追加して、ハードディスクの物理データを組み合わせても理論的にはアクセスできないようにしたいと考えていました。binarywriter を使用して元のファイルの一部を意味不明な部分で上書きすると、それはハードディスクの同じ場所に配置されますか、それともファイルが断片化され、実際には FAT を介してハードディスクの他の部分にリダイレクトされますか? 明らかに、ハードディスク上の元のクラスターを上書きしないのであれば、元のファイルを意味のないもので上書きしても意味がありません。

4

1 に答える 1

1

あなたの最初の質問について: BinaryReaderはあなたが望むものではありません。名前は少し誤解を招きやすいです。「特定のエンコーディングでプリミティブ データ型をバイナリ値として読み取ります」。おそらくFileStreamが必要です。

2 番目の質問について: それは簡単ではありません。説明については、SDelete の「How SDelete Works」セクションを参照してください。将来リンクが壊れた場合の簡単な抜粋:

「特別な属性を持たないファイルを安全に削除することは、比較的簡単です。安全な削除プログラムは、安全な削除パターンでファイルを上書きするだけです。さらに難しいのは、Windows NT/2K の圧縮、暗号化、スパース ファイルを安全に削除し、安全に削除することです。ディスクの空き領域をクレンジングします。

圧縮、暗号化、スパースは、NTFS によって 16 クラスター ブロックで管理されます。プログラムがそのようなファイルの既存の部分に書き込む場合、NTFS は新しいデータを格納するためにディスク上に新しい領域を割り当て、新しいデータが書き込まれた後、ファイルによって以前占有されていたクラスターの割り当てを解除します。」

于 2014-01-18T17:11:13.163 に答える