Member 12779871 Ответов: 1

Шифрование файла AES, openssl


Здравствуйте, у меня есть этот код:
FILE * infile = fopen(fileName,"rb");//must be open in read mode + binary
assert(infile);

FILE * outfile = fopen("./OutputFile.aes","w+b");
assert(outfile);

while(fread(inbuffer,1,AES_BLOCK_SIZE,infile))
{
    AES_ecb_encrypt(inbuffer,outbuffer,&key, AES_ENCRYPT);
    fwrite(outbuffer,1,AES_BLOCK_SIZE,outfile);
    fflush(outfile);
    ZeroMemory(inbuffer,AES_BLOCK_SIZE);
}

fclose(infile);
fclose(outfile);

Есть ли способ зашифровать файл без создания новой зашифрованной копии файла?
UPD: мне нужно зашифровать файл, но мне не нужно сохранять незашифрованный файл. (После шифрования мы получили только зашифрованный файл)
Заранее спасибо!

Что я уже пробовал:

UPD: мне нужно зашифровать файл, но мне не нужно сохранять незашифрованный файл. (После шифрования мы получили только зашифрованный файл)

NotPolitcallyCorrect

"без создания новой зашифрованной копии файла", наверное, что именно вы хотели сделать вместо этого? Какой смысл шифровать файл, не имея зашифрованной копии?

Member 12779871

Мне нужно зашифровать файл, но мне не нужно сохранять незашифрованный файл. (После шифрования мы получили только зашифрованный файл)

jeron1

Вы имеете в виду шифрование на месте?

Member 12779871

Да, если я правильно вас понял.

NotPolitcallyCorrect

Ладно, тогда не надо. Я не вижу здесь проблемы.

Member 12779871

Не могли бы вы изменить мой код на то, что мне нужно?

NotPolitcallyCorrect

Вам нужно, чтобы я написал ваш код для удаления файла? Почему?

NotPolitcallyCorrect

И я до сих пор не понимаю, в чем может быть ваша проблема, так как же кто-то может написать код для этого?

jeron1

Например, указать один и тот же буфер для первого и второго параметров, переданных методу шифрования? А вы пробовали? Я подозреваю, что вы можете столкнуться с некоторыми проблемами const.

jeron1

Я думаю, что он хочет иметь один буфер, передать его методу шифрования и получить тот же самый буфер обратно, но теперь содержащий зашифрованные данные. В основном переписывая оригинал с зашифрованным.

1 Ответов

Рейтинг:
0

KarstenK

У вас должен быть незашифрованный файл, пока вы не узнаете, что ваш выходной файл полностью и безошибочно зашифрован и записан на диск. Чем вы можете удалить файл. Многое может случиться, если вы запустите этот цикл на нескольких файлах.

Если вы хотите ускорить работу, то подумайте о том, чтобы прочитать весь файл в память и зашифровать его, а затем записать на диск. Дисковый ввод-вывод идет медленно!!! И Вам нужно только обнулить память последнего блока.


CPallini

5.