Как получить текущий тип кодировки, используемый .NET для записи / чтения конфигурации для файла конфигурации? - PullRequest
0 голосов
/ 24 мая 2010

Я делаю connection string encryption. для этого мы используем собственный encryption key с AES алгоритмом. во время процесса нам нужно преобразовать строку в байтовый массив, а затем преобразовать байтовый массив обратно в строку. Я обнаружил, что encoding играет важную роль в этих конверсиях.

Так что мне нужно знать, что кодировка C # используется для получения правильного преобразования выше. Есть идеи, как программно получить текущую кодировку?

Ответы [ 3 ]

1 голос
/ 24 мая 2010

Если вы хотите сохранить зашифрованную строку в файле конфигурации (или другого обычного текста), вам лучше хранить зашифрованные байты в виде строки в кодировке base64.:

string encryptedString = // read the config value

byte[] encrypted = Convert.FromBase64String(encryptedString);

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

1 голос
/ 24 мая 2010

На всякий случай, если вы не знаете, но .NET имеет встроенную поддержку Шифрование информации о конфигурации с использованием защищенной конфигурации .Шифрование будет прозрачным для приложения, но операционная система гарантирует, что только учетные записи, которым разрешено дешифровать эту конфигурацию (будет иметь доступ к контейнеру ключей), смогут ее расшифровать.модель, но я думаю, вам все еще нужно получить / сохранить ключ, чтобы расшифровать строку подключения.Столь же эффективно строка подключения так же безопасна, как и ключ, который будет использоваться для их расшифровки.Если это не так безопасно, как в контейнере ключей ОС, я бы порекомендовал пересмотреть ваш дизайн.

1 голос
/ 24 мая 2010

Результат шифрования, скорее всего, не будет представлен исключительно в допустимых кодовых точках для XML (например, ноль, 0, байт инвазирован в XML) - и это не зависит от кодирования.Поэтому ответ заключается в том, чтобы base64 кодировал ваши байтовые коллекции и сохранял полученную строку и строку.И пусть поддержка конфигурации в .NET (сборка System.Configuration) выполняет дальнейшую кодировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...