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

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

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

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

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

textual
Листинг программы
// System.Windows.Controls.PasswordBox
/// <summary>Возвращает или задает пароль, содержащийся в <see cref="T:System.Windows.Controls.PasswordBox" />.</summary>
/// <returns>Строковое представление пароля, содержащегося в данный момент в элементе <see cref="T:System.Windows.Controls.PasswordBox" />.Значением по умолчанию является <see cref="F:System.String.Empty" />.</returns>
[DefaultValue(""), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public unsafe string Password
{
    [SecurityCritical]
    get
    {
        string result;
        using (SecureString securePassword = this.SecurePassword)
        {
            IntPtr intPtr = Marshal.SecureStringToBSTR(securePassword);
            try
            {
                result = new string((char*)((void*)intPtr));
            }
            finally
            {
                Marshal.ZeroFreeBSTR(intPtr);
            }
        }
        return result;
    }
    [SecurityCritical]
    set
    {
        if (value == null)
        {
            value = string.Empty;
        }
        using (SecureString secureString = new SecureString())
        {
            for (int i = 0; i < value.Length; i++)
            {
                secureString.AppendChar(value[i]);
            }
            this.SetSecurePassword(secureString);
        }
    }
}

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы