AESでファイルを暗号化/復号化するためにopensslライブラリを使用してCプログラムを作成しました。問題は、と同じfile.rar
で作業できない(読み取り:暗号化)ことができないことです。代わりに、新しいfile.rar.enc
を作成して元のfile.rar
を削除するだけです。新しいファイルを作成せずにファイルを暗号化する
このようにしてオリジナルのfile.rar
を復元することができます。その結果、暗号化プロセスは実際には役に立たなくなります。暗号化/復号化中に同じファイルで操作する方法はありますか?ここで
は私のCコードです:それは元file.rarを回復することが可能です。この方法で
FILE *ifp = fopen(to_encrypt, "rb");
FILE *ofp = fopen(new_name, "wb");
int bytes_read, bytes_written, num=0;
unsigned char indata[AES_BLOCK_SIZE], outdata[AES_BLOCK_SIZE];
unsigned char skey[17],iv[] = "myIV";
strcpy(skey, "myKey");
AES_KEY key;
AES_set_encrypt_key(skey, 128, &key);
while (1) {
bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, iv, &num, AES_ENCRYPT);
bytes_written = fwrite(outdata, 1, bytes_read, ofp);
if (bytes_read < AES_BLOCK_SIZE) break;
}
[フラッシュベースソリッドステートドライブからのデータの確実な消去](https://cseweb.ucsd.edu/~swanson/papers/Fast2011SecErase.pdf)も参照してください。従来のディスクドライブではなくメモリカードを使用することが多い携帯電話やタブレットにとって特に重要です。 「インプレース」または「インサイチュ」暗号化でさえ、[ウェアレベリングまたは書き込みレベリング](https://en.wikipedia.org/wiki/Wear_leveling)のためにドライブにデータが残ることがあります。 – jww