0

既存のプログラム (プレーンな C コンソール アプリ) に暗号化機能を追加しています。入力パラメーターとして必要なファイルはほとんどなく、私の仕事はこのファイル (機密データ) を保護することです。

私が今やっていることは、最初にファイルを暗号化し(外部アプリケーションとの単純なXOR)、次にプログラム内でそれらを解読し、既存のプログラムがファイルを処理することです。次に、すべてが成功したら、それらのファイルを暗号化して戻します (すべてがハードディスクにローカルに保存されます)。

ただし、すべての「開いている」ファイルはハードディスクに保存されるため、セキュリティには穴があります。プログラムが途中で失敗した場合、それらのファイルは復号化されません。

私の問題は、既存のプログラムがFILE変数を入力として取り、それらのファイルを直接操作していることです。これは私のプログラムではないので、変更する権利はありません。

必要なのは、ファイルをハードディスクではなくメモリに書き込むことです。これを可能にするライブラリが Linux にいくつかあることは知っていますが、私はこれを win で開発しています。

4

1 に答える 1

0

データ型は、FILE開かれているファイルへのファイル ポインターを取得するために使用されるため、FILE *変数は既にメモリ内にあります。ファイル全体をメモリに保存したい場合は、ファイルと同じサイズのバッファを割り当て、メモリ内のファイル全体を読み取る必要があります。

Stackoverflow では、 freadfwritefseekなどに関するその他の例を見つけることができます。

編集:

メモリ内のファイルを操作したいが、既存のstdio.hインターフェイス (fopen、fread、fwrite など) を使用する場合は、ramdrive が必要です。ここでは、Windows で作成するための無料のドライバーを見つけることができます。ファイルを処理するには、ファイルを ramdriveに移動し、終了したら ramdrive の外に移動する必要があることに注意してください。そうしないと、すべての変更が失われます。

于 2012-09-05T07:58:59.810 に答える