Midnight Ahri Ответов: 3

Шифрование Файла Документа Word


Я смог зашифровать текстовые документы с помощью StreamReader и StreamWriter для чтения и изменения содержимого файла.
Но слово, я попытался сначала переименовать его в txt, а затем открыть его, и я шифрую все, что внутри, когда я расшифровываю его, он остается поврежденным.
Мне нужно объяснение, чтобы прочитать строку в файле документа word.

PS: я использую свой метод шифрования Caesar

Редактировать :
Мне все равно, слабый он или нет.
Я просто хочу знать, как зашифровать файл документа word.

Например, у меня был документ word с текстом "ABCDEFGHIJKLMNOPQRSTUVWXYZ" внутри.
И я собираюсь зашифровать его с помощью шифра Вернама.
Как же так?

Member 13566383

Если ваше программное обеспечение для шифрования / дешифрования не может обрабатывать двоичные файлы, а только текстовые файлы, вы должны преобразовать двоичный файловый поток в строки Base64 или символьные массивы (каждые 3 байта будут представлены 4 символами).
Методы, которые нужно использовать, - это преобразование.ToBase64String / Convert.ToBase64CharArray.
Расшифровка вашего зашифрованного файла приведет к созданию строк / символов Base64, которые вы можете преобразовать в двоичный формат с помощью соответствующих методов Convert.FromBase64...

The Magical Magikarp

Зачем конвертировать в Base64? Почему бы не сделать файл.ReadAllBytes(path), а затем преобразуйте байты в шестнадцатеричные символы, чтобы вы могли просматривать их, скажем, в RichTextBox? :D

The Magical Magikarp

Base64 вряд ли идеально подходит для этого, потому что если бы вы попытались преобразовать.FromBase64String(string), то вы бы ничего не увидели, если бы отображались в RichTextBox или метке и т. д. Шестнадцатеричное число позволяет вам на 100% просматривать байты, даже нулевые байты("\x0" или "00"), идеально.

Member 13566383

У меня никогда не было никаких проблем с чтением символов Base64. Поток Base64 состоит только из допустимых символов ASCII. Никаких проблем с нулевым байтом, ознакомиться с MDSN документации для конвертирования.Метод ToBase64String:

".....В следующем примере демонстрируется применение метода ToBase64String. Входные данные разделены на группы по три байта (24 бита) в каждой. Следовательно, каждая группа состоит из четырех 6-разрядных чисел, где каждое число колеблется от десятичного 0 до 63. В этом примере имеется 85 3-байтовых групп с одним оставшимся байтом. Первая группа состоит из шестнадцатеричных значений 00, 01 и 02, которые дают четыре 6-битных значения, равные десятичным 0, 0, 4 и 2. эти четыре значения соответствуют базовым 64 цифрам "А", "А", "Е" и "С" в начале вывода."

3 Ответов

Рейтинг:
20

Pheonyx

Как все постоянно указывают, документ word-это не обычный текст.

Чего они не спросили, так это какой формат документа word вы обрабатываете?
Обрабатываете ли вы файл DOC или DOCX, то есть соответствует ли он формату OpenXML?

Если Вы читаете DOC-файл, то вам нужно использовать правильный interop/libary для извлечения необработанных текстовых данных, которые затем можно зашифровать. (Я предлагаю вам начать со слова Interop, альтернативой, которая не требует установки Word, является NPOI NPOI[^], бета-версия 2.0 также поддерживает файлы DOCX)

Если Вы читаете файл DOCX, то вам нужно использовать библиотеку OpenXML для извлечения необработанных текстовых данных, а затем зашифровать их и вставить обратно в документ.Страница Справки Microsoft[^]


Midnight Ahri

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

Pheonyx

Это зависит от вашей реальной цели. Лично я не так уж много знаю о шифровании таким способом.

Если бы это был я, я бы, вероятно, просто использовал что-то вроде этого:
Кликни меня

Midnight Ahri

Большое вам спасибо за информацию, она очень помогает. =D

Рейтинг:
1

phil.o

Вы ошибаетесь, потому что документы Word не являются полностью текстовыми файлами; вместо этого они являются двоичными файлами.
Итак, в вашем процессе
- изменить расширение на txt
- откройте файл как текстовый
- зашифруйте его, как если бы это был настоящий текстовый файл
вы развращаете его.

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


Midnight Ahri

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

phil.o

Какая проблема?

The Magical Magikarp

Под "проблемой" я подразумеваю его первоначальный вопрос. Кроме того, я действительно ответил на его вопрос "зашифровать файл документа Word". -И в C# тоже. Он сделал замечание и задал вопрос, но никто не ответил. Я ответил: :)

phil.o

Я все еще не понимаю, какое это имеет отношение ко мне. Но неважно, это все равно не так важно.

The Magical Magikarp

Нет, я не имел в виду тебя-я говорил с Миднайт Ари :) Извините за путаницу

Рейтинг:
0

Dave Kreskowiak

PS: я использую свой собственный метод шифрования.

Это твоя большая ошибка. Обычно, если у вас нет докторской степени по математике, прокатка вашего собственного метода "шифрования" - это самое небезопасное шифрование, которое вы можете придумать.

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


Midnight Ahri

Извините за мою ужасную информацию.
Я использую Шифр Цезаря, который шифрует символы один за другим.
Прочитайте текстовый файл, зашифруйте, а затем измените текстовый файл.
Мне нужно объяснение того, как читать строку в файле документа word без формата xml.

Dave Kreskowiak

Да, в этом-то и проблема. Шифр Цезаря работает только с текстовыми файлами. Документы Word не являются текстовыми файлами. Они бинарны!

Кроме того, Шифр Цезаря очень слаб и легко ломается. Вы действительно ничего не шифруете с помощью этого.

Midnight Ahri

Да, это правда, что шифр Цезаря очень слаб.
Но моя главная цель-получить простой текст из документов word.
Можете ли вы предоставить мне информацию об этом?