Как работать с 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д