Hi,
I am trying to encrypt XML elements before saving.
Below is the code to get values and save.
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("../../Info.xml"); XmlElement ParentElement = xmlDoc.CreateElement("Details"); XmlElement userID = xmlDoc.CreateElement("ID"); userID.InnerText = strName; XmlElement userPwd = xmlDoc.CreateElement("Pwd"); userPwd.InnerText = strPwd; XmlElement startDate = xmlDoc.CreateElement("Start"); startDate.InnerText = dtStart.ToString(); XmlElement expiryDate = xmlDoc.CreateElement("Expiry"); expiryDate.InnerText = dtExpiry.ToString(); ParentElement.AppendChild(userID); ParentElement.AppendChild(userPwd); ParentElement.AppendChild(startDate); ParentElement.AppendChild(expiryDate); xmlDoc.DocumentElement.AppendChild(ParentElement); xmlDoc.Save("../../Info.xml");
Now I have a private string (code shown below) which can encrypt the inner xml contents before save
private string Encrypt(string clearText) { string EncryptionKey = "MAKV2SPBNI99212"; byte[] clearBytes = Encoding.Unicode.GetBytes(clearText); using (Aes encryptor = Aes.Create()) { Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); encryptor.Key = pdb.GetBytes(32); encryptor.IV = pdb.GetBytes(16); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(clearBytes, 0, clearBytes.Length); cs.Close(); } clearText = Convert.ToBase64String(ms.ToArray()); } } return clearText; }
I am passing the innerxml contents(shown below) and `clearText` string encrypts the contents.
Encrypt(xmlUserDoc.InnerXml);
Now how can I save those encrypted contents to the xml file?