Чтение двоичного файла в виде текста и манипулирование им ... [C #] и [VB.NET] - PullRequest
0 голосов
/ 29 сентября 2010

Ну, ребята, я здесь немного рассол ...

Я делаю некоторые упражнения по шифрованию данных. Одним из них являются двоичные файлы. В настоящее время я использую тройной DES для шифрования и дешифрования файлов как в VB.NET, так и в C # ...

Теперь дело в том, что когда он расшифрован в VB.NET и сохранен, я могу выполнить его снова ...

Но по какой-то причине мой файл C # больше! 20,4К, где VB.NET один 19,0. Файл C # также представляется неисполняемым ...

При ближайшем рассмотрении. Файлы выглядят почти одинаково, но C #, кажется, добавляет несколько дополнительных байтов тут и там в (казалось бы) случайных местах ...

В настоящее время я использую File.ReadAllText (String filepath, Encoding encoding); с кодировкой UTF-8

спасибо!

1 Ответ

3 голосов
/ 29 сентября 2010

Вы говорите, что используете File.ReadAllText ... но также, что это двоичные файлы. Это заставляет меня предположить, что вы обрабатываете непрозрачные двоичные данные (например, результат шифрования), как если бы это был текст (например, вызывая Encoding.GetString для них).

Не делай этого.

По сути, шифрование обычно работает с двоичными данными - двоичным входом, двоичным выходом. Если вам необходимо зашифровать текст в текст, вы обычно применяете «обычную» кодировку для преобразования текста в двоичные данные (например, Encoding.UTF8.GetBytes(text)), а затем используете Base64 для преобразования непрозрачных двоичных данных в текст без потерь, например с Convert.ToBase64String(encrypted).

Расшифровка только обратная: используйте Convert.FromBase64String(encryptedText), чтобы получить зашифрованные двоичные данные, расшифруйте их, а затем используйте Encoding.UTF8.GetString(decrypted), чтобы вернуться к тексту.

...