public static void ShowForm(XML_USER user) { ResultForm resultForm = new ResultForm(); resultForm.user = user; resultForm.FillInformation(); resultForm.FillListView(); resultForm.MakeGraphic(); resultForm.ShowDialog(); }
//Посмотреть свои результаты private void ViewResultsTSMI_Click(object sender, EventArgs e) { string s; if (FindResultBox.Input(out s)) { XML_USER xmlUser = new XML_USER(); xmlUser.DeSerialize(s); ResultForm.ShowForm(xmlUser); this.Hide(); } }
/// <summary> /// Десериализует объект типа XML с именем /// </summary> /// <param name="NameFile">Имя файла</param> public void DeSerialize(string NameFile) { string file = "UserTest\\" + NameFile + ".xml"; using (var f = new FileStream(file, FileMode.Open)) { #region Получение соли и вектора инициализации из файла // Выделяем память под ключ и IV byte[] salt = new byte[salt_length]; byte[] iv = new byte[key_length]; // Длина IV равна размеру блока и равна длине ключа f.Read(salt, 0, salt.Length); f.Read(iv, 0, iv.Length); #endregion #region Получение ключа // Получим ключ из пароля byte[] key; // Байты ключа var keygenerator = new Rfc2898DeriveBytes(password, salt); key = keygenerator.GetBytes(key_length); #endregion #region Подготовка алгоритма // Создаём объект, который будет заниматься дешифровкой. Aes aes = Aes.Create(); aes.Key = key; // Задаём ключ aes.IV = iv; // Задаём вектор инициализации #endregion #region Дешифровка // Создаём дешифровшик var decryptor = aes.CreateDecryptor(); // Переменная для дешифрованных данных byte[] data; // Поместим дешифрованный текст в переменную text string text; // Создаём шифрованный поток поверх нашего файла и читаем данные // Заранее размер неизместен, поэтму сперва копируем в MemoryStream // Копирование выполняется побайтово, но лучше блоками using (var ms = new MemoryStream()) using (var cs = new CryptoStream(f, decryptor, CryptoStreamMode.Read)) { while (true) { var b = cs.ReadByte(); if (b == -1) { break; // Если достигнут конец потока } ms.WriteByte((byte)b); } // Если мы сохраняли текст в UTF-8, то декодируем // data = ms.ToArray(); // text = Encoding.UTF8.GetString(data); // Если мы использовали сериализацию, то десериализуем ms.Seek(0, SeekOrigin.Begin); // Перематываем поток на начало XML_USER User = (XML_USER)formatter.Deserialize(ms); MaxPoint = User.MaxPoint; ID = User.ID; FIO = User.FIO; EI = User.EI; Science = User.Science; Theme = User.Theme; Point = User.Point; Mark = User.Mark; Time = User.Time; Questions = User.Questions; } #endregion } /* * using (FileStream fs = new FileStream("UserTest\\" + NameFile + ".xml", FileMode.OpenOrCreate)){ * XML_USER User = (XML_USER)formatter.Deserialize(fs); * MaxPoint = User.MaxPoint; * ID = User.ID; * FIO = User.FIO; * EI = User.EI; * Science = User.Science; * Theme = User.Theme; * Point = User.Point; * Mark = User.Mark; * Time = User.Time; * Questions = User.Questions; * }*/ }