c # Считать двоичные данные в строку - PullRequest
2 голосов
/ 07 мая 2011

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

Метод VB6 для этого будет:

Dim S as string
s = space$(lof(1))
Get #1,, s
close #1

Если нет, я видел разные способы преобразования строки в байтовый массив, обратно в строку, включая base64, UTF8, и, наконец, прохождение char в char и преобразование его в байт.

Моя цель проста. Я хочу извлечь двоичные данные в строку, зашифровать эту строку и, наконец, записать все данные строк обратно в новый двоичный файл.

Какой метод вы бы назвали самым быстрым для этого?

Ответы [ 2 ]

3 голосов
/ 07 мая 2011

Если вы просто хотите зашифровать двоичные данные, вам следует вообще избегать использования строки. Если вы шифруете текстовую информацию, принадлежащую строке, вам следует позаботиться о кодировках (UTF-8 и друзья) - хотя чтение данных, помещение их в строку, шифрование строки и последующая запись данных представляется странным требованием.

1 голос
/ 07 мая 2011

Вы заявляете, что хотите перейти от byte[] до string до byte[]; во-первых, обратите внимание, что Encoding (например, UTF-8) является , а не опцией; это применимо только при переходе строки в двоичный файл обратно в строку. Разница важна: для этого нужны фактические текстовые данные, и произвольный byte[] не может рассматриваться как текстовые данные. Это также исключает вашу «прямую запись в строку» по аналогичным причинам (не ограничиваясь: суррогаты и т. Д.).

Правильный способ кодирования двоичного кода в строку - это base-64, base-16 и т. Д .; Здесь base-64 - наиболее эффективная кодировка общего назначения.

Тем не менее, большая часть кода шифрования работает с двоичным, а не с текстовым. Если у вас есть API шифрования текста, в большинстве случаев первое, что он собирается сделать, - это преобразовать его в двоичный файл с использованием кодировки, такой как UTF-8.

Итак: убедитесь, что вы не пропустили прямую двоичную опцию API.

...