Как инициализировать SecureString для чтения только - PullRequest
1 голос
/ 30 июля 2009

Я хотел бы создать безопасную переменную, которая будет более или менее CONST для использования в моем коде. Я рассмотрел использование System.Security.SecureString, и похоже, что это может быть билетом, поскольку я не хочу, чтобы пользователь узнал этот пароль. Единственная проблема заключается в его инициализации. В большинстве случаев, похоже, что SecureString лучше всего «установить» нажатием клавиши пользователем. Я не хочу этого Один вариант, который я нашел, выглядит так:

unsafe public static void Main()
   {
      SecureString testString;
      // Define the string value to assign to a new secure string.
      char[] chars = { 't', 'e', 's', 't' };

      // Instantiate a new secure string.
      fixed(char* pChars = chars)
      {
         testString = new SecureString(pChars, chars.Length);
      }
      // Display secure string length.
      Console.WriteLine("The length of the string is {0} characters.", 
                        testString.Length);
   }

Единственная проблема в том, что массив char 't', 'e', ​​'s', 't', вероятно, все еще упакован в память после компиляции. Есть ли какой-нибудь хороший способ установить значение SecureString равным константе до времени компиляции и сделать это значение шифрованным?

1 Ответ

0 голосов
/ 30 июля 2009

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

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