У меня есть задание, где я должен реализовать алгоритм Rijndael для шифрования AES-128. У меня есть работающий алгоритм, но у меня нет правильного ввода / вывода файла.
Назначение требует, чтобы мы использовали параметры, переданные из командной строки. В этом случае в качестве параметра будет указан путь к файлу, который пользователь хочет зашифровать.
Моя проблема в том, что я заблудился в том, как читать байты файла и хранить эти байты внутримассив для последующего шифрования.
Я пытался использовать ifstream и ofstream для открытия, чтения, записи и закрытия файлов, и он отлично работает для текстовых файлов. Однако мне нужно, чтобы приложение принимало ЛЮБОЙ файл в качестве входных данных.
Когда я попробовал использовать метод fstream с использованием pdf в качестве входных данных, моя программа вылетала. Итак, теперь мне нужно научиться брать байты файла, хранить их в массиве без знака для шифрования, а затем хранить их в другом файле. Этот процесс шифрования и хранения зашифрованного текста должен происходить с интервалом в 16 байт.
Приведенная ниже реализация является моей первой попыткой чтения файлов в двоичном режиме и последующей записи того, что было прочитано в другом файле, также в двоичном режиме. Вывод доступен для чтения в шестнадцатеричном считывателе.
int main(int argc, char* argv[])
{
if (argc < 2)
{
cerr << "Use: " << argv[0] << " SOURCE_FILEPATH" << endl << "Ex. \"C\\Users\\Anthony\\Desktop\\test.txt\"\n";
return 1;
}
// Store the Command Line Parameter inside a string
// In this case, a filepath.
string src_fp = argv[1];
string dst_fp = src_fp.substr(0, src_fp.find('.', 0)) + ".enc";
// Open the filepaths in binary mode
ifstream srcF(src_fp, ios::in | ios::binary);
ofstream dstF(dst_fp, ios::out | ios::binary);
// Buffer to handle the input and output.
unsigned char fBuffer[16];
srcF.seekg(0, ios::beg);
while (!srcF.eof())
{
srcF >> fBuffer;
dstF << fBuffer << endl;
}
dstF.close();
srcF.close();
}
Реализация кода работает не так, как задумано.
Будем весьма благодарны за любые указания относительно того, как решить мою дилемму.