Как и где хранить конфиденциальные данные - C#
Формулировка задачи:
Доброго времени суток.
Возможно по заголовку вы посудили, что тема заезженная, но меня интересует несколько другой аспект данного вопроса.
У меня имеется некое приложение, которое в ходе работы генерирует\изменяет информацию некоторую. Эту информацию необходимо сохранять на устройстве (компуктере).
Сохранение данных произвожу через XML-сериализацию (все работает, все хорошо).
Но вот одно
Не нужно быть
но
: Информация, которая сохраняется на устройстве, должна быть недоступна для посторонних глаз (например файлик с логинами и паролями для приложения ). Запись в обычный текстовик такой информации для меня является каким-то слишком не продуманным шагом, посему и полез в XML. Но XML же в свою очередь не гарантирует полной конфиденциальности внутренней информации файла (если открыть файл обычным блокнотом, то можно найти необходимые фрагменты).Точнее
: У меня в XML сохраняется List, содержащий объекты с двумя свойствами (UserName, UserPassword). По закрытию приложения в XML файле можно увидеть такое:
Листинг программы
- яяяя NMAS.Stuff.PassContainer, Version=1.0.0.0,
- Culture=neutral, PublicKeyToken=null
- %MAS.Stuff.PassContainer.Objects.Users
- List`1+_items
- List`1+_sizeList`1+_version &MAS.Stuff.PassContainer.Objects.User[]
- $MAS.Stuff.PassContainer.Objects.User
- $MAS.Stuff.PassContainer.Objects.User
- userNameuserPassword test test
хацкером
, чтобы догадаться об аккаунте с данными test (логин и пароль). Есть ли вариант сохранения данных с предотвращением "подглядывания"? (Чтобы данные нельзя было узреть или они были нечитабельны). Спасибо.Решение задачи: «Как и где хранить конфиденциальные данные»
textual
Листинг программы
- public T Load<T>(string path, string password8)
- {
- var key = Encoding.ASCII.GetBytes(password8);
- var vector = Encoding.ASCII.GetBytes(IV);
- using (var dec = new DESCryptoServiceProvider().CreateDecryptor(key, vector))
- using (var fs = new FileStream(path, FileMode.Open))
- if (fs.Length == 0) return default(T);
- else
- using (var cs = new CryptoStream(fs, dec, CryptoStreamMode.Read))
- return (T)new BinaryFormatter().Deserialize(cs);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д