Как зашифровать и расшифровать несколько файлов в один файл?

В качестве заголовка я хочу зашифровать 10 файлов в один файл, и файл расширения можно настроить. После шифрования я автоматически расшифрую его, чтобы создать 10 файлов, как первоначально. У кого-нибудь есть какие-либо идеи?

2 ответа

Как и любой другой поток, где вы не можете различить сообщения, вам нужен какой-то разделитель. Предварительная длина материала является обычным способом сделать это.

Поэтому составьте спецификацию формата файла, например:

  • Запустите файл с uint32 который указывает количество файлов в архиве
  • Затем для каждого файла:
    • Написать uint32 указание длины имени файла в байтах в кодировке, которую вы хотите использовать (я бы пошел для UTF-8)
    • Напишите байты имени файла
    • Написать uint32 указание длины данных файла
    • Напишите данные файла

Затем, читая файл, прочитайте uints и извлеките следующие байты.

Но вы, как правило, не хотите изобретать свой собственный формат файла.

Возможное решение

  • Зашифровать все файлы
  • Хранить зашифрованные данные (byte[]) в List<byte[]> или храните его отдельно во временных файлах (возможно, file.oldext.newext.tmp)
  • Создайте новый XML-файл, запишите в него все данные (создайте список в XML-файле и сохраните данные в элементах списка; один элемент на файл)
  • Сохраните файл XML на диск (newfilename.newext)
Другие вопросы по тегам