Как работать с SecureString? - C#

Узнай цену своей работы

Формулировка задачи:

Скажите в чем смысл этого класса? Строку в него преобразовать еще можно, но вот обратно вообще никак не выходит... Ну т.е. я видел в интернете всякие способы через Marshal, но неужели это так задумано? Может быть (как я понял) ее даже и не надо переводить в обычную строку, но как ее тогда хотя бы в БД добавить? И как потом сравнить 2 таких строки? Кажется перегруженного сравнения там тоже нет... Что толку с нее?

Решение задачи: «Как работать с SecureString?»

textual
Листинг программы
  1. // System.Windows.Controls.PasswordBox
  2. /// <summary>Возвращает или задает пароль, содержащийся в <see cref="T:System.Windows.Controls.PasswordBox" />.</summary>
  3. /// <returns>Строковое представление пароля, содержащегося в данный момент в элементе <see cref="T:System.Windows.Controls.PasswordBox" />.Значением по умолчанию является <see cref="F:System.String.Empty" />.</returns>
  4. [DefaultValue(""), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
  5. public unsafe string Password
  6. {
  7.     [SecurityCritical]
  8.     get
  9.     {
  10.         string result;
  11.         using (SecureString securePassword = this.SecurePassword)
  12.         {
  13.             IntPtr intPtr = Marshal.SecureStringToBSTR(securePassword);
  14.             try
  15.             {
  16.                 result = new string((char*)((void*)intPtr));
  17.             }
  18.             finally
  19.             {
  20.                 Marshal.ZeroFreeBSTR(intPtr);
  21.             }
  22.         }
  23.         return result;
  24.     }
  25.     [SecurityCritical]
  26.     set
  27.     {
  28.         if (value == null)
  29.         {
  30.             value = string.Empty;
  31.         }
  32.         using (SecureString secureString = new SecureString())
  33.         {
  34.             for (int i = 0; i < value.Length; i++)
  35.             {
  36.                 secureString.AppendChar(value[i]);
  37.             }
  38.             this.SetSecurePassword(secureString);
  39.         }
  40.     }
  41. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы