2009-07-29 3 views
0

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

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); 
    } 

только проблема, то массив символов «т», «е», «s», «т», вероятно, еще упаковываться в памяти после компиляции , Есть ли какой-либо хороший способ установить значение SecureString на постоянное значение перед компиляцией, и чтобы это значение было скремблировано?

+1

Что вы пытаетесь достичь? Вы хотите сохранить секретный пароль, чтобы скрыть некоторые функции? Когда код просочится/обнаружен, вы «безопасность» исчезли! Лучшее решение, но все же не здорово, это ваше приложение. телефон дома. –

+0

Код (источник) не должен быть просочился, просто будет достаточно распространения исполняемого файла! Декомпиляции может быть достаточно ... или запустить его через отладчик. Секрет, который вы отправляете ненадежному человеку, уже не секрет. – Kitsune

+0

Корень этого заключается в том, что я должен записать x509certificate2 в файл, а пароль - защитить его. Затем я прочитал его, используя тот же пароль. – Nick

ответ

0

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

Смежные вопросы