Как и где хранить конфиденциальные данные - C#

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

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

Доброго времени суток. Возможно по заголовку вы посудили, что тема заезженная, но меня интересует несколько другой аспект данного вопроса. У меня имеется некое приложение, которое в ходе работы генерирует\изменяет информацию некоторую. Эту информацию необходимо сохранять на устройстве (компуктере). Сохранение данных произвожу через XML-сериализацию (все работает, все хорошо). Но вот одно

но

: Информация, которая сохраняется на устройстве, должна быть недоступна для посторонних глаз (например файлик с логинами и паролями для приложения ). Запись в обычный текстовик такой информации для меня является каким-то слишком не продуманным шагом, посему и полез в XML. Но XML же в свою очередь не гарантирует полной конфиденциальности внутренней информации файла (если открыть файл обычным блокнотом, то можно найти необходимые фрагменты).

Точнее

: У меня в XML сохраняется List, содержащий объекты с двумя свойствами (UserName, UserPassword). По закрытию приложения в XML файле можно увидеть такое:
Листинг программы
  1. яяяя NMAS.Stuff.PassContainer, Version=1.0.0.0,
  2.  
  3. Culture=neutral, PublicKeyToken=null
  4.  
  5. %MAS.Stuff.PassContainer.Objects.Users
  6. List`1+_items
  7.  
  8. List`1+_sizeList`1+_version &MAS.Stuff.PassContainer.Objects.User[]
  9.  
  10. $MAS.Stuff.PassContainer.Objects.User
  11.  
  12. $MAS.Stuff.PassContainer.Objects.User
  13.  
  14. userNameuserPassword test test
Не нужно быть

хацкером

, чтобы догадаться об аккаунте с данными test (логин и пароль). Есть ли вариант сохранения данных с предотвращением "подглядывания"? (Чтобы данные нельзя было узреть или они были нечитабельны). Спасибо.

Решение задачи: «Как и где хранить конфиденциальные данные»

textual
Листинг программы
  1.         public T Load<T>(string path, string password8)
  2.         {
  3.             var key = Encoding.ASCII.GetBytes(password8);
  4.             var vector = Encoding.ASCII.GetBytes(IV);
  5.  
  6.             using (var dec = new DESCryptoServiceProvider().CreateDecryptor(key, vector))
  7.             using (var fs = new FileStream(path, FileMode.Open))
  8.                 if (fs.Length == 0) return default(T);
  9.                 else
  10.                 using (var cs = new CryptoStream(fs, dec, CryptoStreamMode.Read))
  11.                     return (T)new BinaryFormatter().Deserialize(cs);
  12.         }

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


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

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

6   голосов , оценка 4.167 из 5

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

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

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