Как и где хранить конфиденциальные данные - 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);
        }

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


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

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

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