Как зашифровать и расшифровать несколько файлов в один файл?
В качестве заголовка я хочу зашифровать 10 файлов в один файл, и файл расширения можно настроить. После шифрования я автоматически расшифрую его, чтобы создать 10 файлов, как первоначально. У кого-нибудь есть какие-либо идеи?
2 ответа
Как и любой другой поток, где вы не можете различить сообщения, вам нужен какой-то разделитель. Предварительная длина материала является обычным способом сделать это.
Поэтому составьте спецификацию формата файла, например:
- Запустите файл с
uint32
который указывает количество файлов в архиве - Затем для каждого файла:
- Написать
uint32
указание длины имени файла в байтах в кодировке, которую вы хотите использовать (я бы пошел для UTF-8) - Напишите байты имени файла
- Написать
uint32
указание длины данных файла - Напишите данные файла
- Написать
Затем, читая файл, прочитайте uints и извлеките следующие байты.
Но вы, как правило, не хотите изобретать свой собственный формат файла.
Возможное решение
- Зашифровать все файлы
- Хранить зашифрованные данные (
byte[]
) вList<byte[]>
или храните его отдельно во временных файлах (возможно, file.oldext.newext.tmp) - Создайте новый XML-файл, запишите в него все данные (создайте список в XML-файле и сохраните данные в элементах списка; один элемент на файл)
- Сохраните файл XML на диск (newfilename.newext)