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?