2015-05-28 2 views
0

У меня есть работа с C# Application. У меня есть два важных данных в моем XML-файле, который является именем пользователя и паролем.Шифрование значения атрибута XML и элемента?

I want to: 

Шифровать и расшифровывать имя пользователя и пароль при входе в систему, сохранить файл и загрузить xml. Может ли кто-нибудь помочь мне в этом?

Файл XML является

<Users> 
    <user username="kelil2000"> 
    <password>123</password> 
    <author>Home Owner</author> 
    <name>Kelil</name> 
    <mobile>0911</mobile> 
    </user> 
    <user username="usminuru"> 
    <password>1234</password> 
    <author>Home Owner</author> 
    <name>Ismail K.</name> 
    <mobile>0910178976</mobile> 
    </user> 
</Users> 

Логин:

if (txtUserName.Text == "" || txtPassword.Text == "") 
      { 
       MessageBox.Show("Username or Passowrd field is empty, try again!"); 
       ClearTextBoxes(); 
       return; 
      } 

      int i = 0; // we use this variable to count if ther’s a user with this name 

      XmlDocument myXml=new XmlDocument(); 

      myXml.Load(Application.StartupPath + "/AppUsers/Users.xml");    

      XmlNodeList userList = myXml.SelectNodes("Users/user"); 

      foreach(XmlNode user in userList) 

      { 

       string userName = user.Attributes["username"].Value; 

       string userPassword = user["password"].InnerText; 

       string userAuthor = user["author"].InnerText; 

       if (userName == txtUserName.Text) 

       { 

        ++i; 

        if (userPassword == txtPassword.Text) 

        { 

         Form panel; 

         this.Opacity = 0; 

         switch(userAuthor) 

         { 

          case "Home Owner": 

           panel = new MainWindow(); 

           panel.Show(); 

           break; 

          case "Member" : 

           panel = new Report(); 

           panel.Show(); 

           break; 


         } 


        } 

        else 

        { 

         MessageBox.Show("Wrong Password!"); 
         ClearTextBoxes(); 

        } 

       } 

       } 

      if (i == 0) 

       MessageBox.Show("No specified user with this name!"); 
      ClearTextBoxes(); 
     } 

Сохранить XML:

private void AddUser() 
     { 
      if (txtUserName.Text == "" || txtPassword.Text == "" || cmbAuthor.Text == "" || txtName.Text == "" || txtMobile.Text == "") 
      { 
       MessageBox.Show("Filed is empty"); 
       return; 
      } 
      try 
      { 
       string _file = (Application.StartupPath + "/AppUsers/Users.xml"); 
       XDocument doc; 

       if (!File.Exists(_file)) 
       { 
        doc = new XDocument(); 
        doc.Add(new XElement("Users")); 
       } 
       else 
       { 
        doc = XDocument.Load(_file); 
       } 

       doc.Root.Add(
         new XElement("user", 
            new XAttribute("username", txtUserName.Text), 
            new XElement("password", txtPassword.Text), 
            new XElement("author", cmbAuthor.Text), 
            new XElement("name", txtName.Text), 
            new XElement("mobile", txtMobile.Text) 
          ) 
        ); 
       doc.Save(_file); 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Something Wrong!" + ex.ToString()); 
      } 
     } 

Загрузить XML-файл

private void loadXmlData() 
     { 

      listView1.Items.Clear(); 
      XDocument doc = XDocument.Load(Application.StartupPath + "/AppUsers/Users.xml"); 
      doc.Descendants("user").ToList() 
    .ForEach(x => listView1.Items.Add(
       new ListViewItem(
       new string[] { 
           x.Attribute("username").Value, 
           x.Element("password").Value, 
           x.Element("author").Value, 
            x.Element("name").Value, 
           x.Element("mobile").Value})) 
      ); 



     } 
+3

Вы определенно * не * хотите сохранить пароль пользователя, зашифрованный или иным образом в любом месте на сервере. Во всяком случае, вы хотите сохранить [безопасные соленые хэши] (https://crackstation.net/hashing-security.htm) пароля пользователя. Если вы новичок в «всех этих вещах», я настоятельно рекомендую вам не прикасаться к нему, пока вы не узнаете, что делаете. Криптография сложна. Роллинг вашей собственной системы безопасности всегда очень плохая идея, даже для опытных людей. Не делай этого. Вместо этого найдите готовые библиотеки. – Tomalak

+0

Никогда не храните пароль! Конечно, не в обычном тексте, но и не зашифрованном. Шифрование можно расшифровать! Всегда храните хешированный (и соленый) пароль. Главное отличие состоит в том, что хэш-алгоритмы * не * обратимы по дизайну. См. Http://stackoverflow.com/a/401684/1336590 (не только для php). – Corak

ответ

1

Прежде всего, вам нужно выбрать, какое шифрование использовать и где сохранить свой ключ. как только вы это сделали, вам нужно запустить метод шифрования/дешифрования на значение, которое вы пишете/читаете из файла XML.

+0

У меня есть метод шифрования, который шифрует и дешифрует весь файл, а не конкретные значения. – ensberiyu

+0

Вам нужно получить метод, который шифрует байты. –

+0

Можете ли вы показать мне, если вы знаете, просто редактируя мой код – ensberiyu

Смежные вопросы