1
在創建XML文件期間我正在做加密字段。它工作正常。下面是代碼:建立&保存文件到內存和加密(C#,WPF,LINQ)
創建XML類:
private void btnSave_Click(object sender, RoutedEventArgs e)
{
XmlTextWriter xWriter = new XmlTextWriter("test.xml", Encoding.UTF8);
xWriter.Formatting = Formatting.Indented;
xWriter.WriteStartElement("root");
testViewClassDataContext dc = new testViewClassDataContext();
List<test_view> tvq = (from tt in dc.test_views
select tt).ToList();
var propertiesTestView = typeof(test_view).GetProperties();
var testViewValues = new List<string>();
loopPropXML(tvq, propertiesTestView, testViewValues, xWriter);
xWriter.WriteEndElement();
xWriter.Close();
}
public void loopPropXML<T>(IEnumerable<T> queryResult, PropertyInfo[] properites, List<string> addedValues, XmlTextWriter xWriter)
{
foreach (var qrl in queryResult)
{
var values = new List<object>();
xWriter.WriteStartElement("tv");
foreach (var property in properites)
{
Object value = property.GetValue(qrl, null);
xWriter.WriteStartElement(property.Name.ToString());
DESEncrypt testEncrypt = new DESEncrypt();
string pass = "qwertyuiop";
string encText = testEncrypt.EncryptString((value == null ? "" : value.ToString()), pass);
xWriter.WriteString(encText);
xWriter.WriteEndElement();
values.Add(value);
}
xWriter.WriteEndElement();
}
}
這裏是加密代碼 「微軟研究院C#」 了:
static TripleDES CreateDES(string key)
{
MD5 md5 = new MD5CryptoServiceProvider();
TripleDES des = new TripleDESCryptoServiceProvider();
des.Key = md5.ComputeHash(Encoding.Unicode.GetBytes(key));
des.IV = new byte[des.BlockSize/8];
return des;
}
public string EncryptString(string plainText, string password)
{
byte[] plainTextBytes = Encoding.Unicode.GetBytes(plainText);
MemoryStream myStream = new MemoryStream();
TripleDES des = CreateDES(password);
CryptoStream cryptStream = new CryptoStream(myStream, des.CreateEncryptor(), CryptoStreamMode.Write);
cryptStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptStream.FlushFinalBlock();
return Convert.ToBase64String(myStream.ToArray());
}
如何將其更改爲:
- 先建立文件並保存到內存中
- 然後加密它
- 最後一次保存。
你的意思是加密整個xml文件而不是字段? –
是的:首先我只是創建XML,保存在內存中(不保存),然後加密並保存 – 4est
然後你不能實現你剛剛說的嗎? –