目前我已经实现了加密,并且在当前密钥存在的话也可以进行解密。但是事实上加密和解密是两个分开的步骤,不可能刚加完密,就立刻解密。那么就牵扯到了,密钥怎样保留的问题,保留然后再在解密时使用。
RijndaelManaged key
=
null
;
try
{
// Create a new Rijndael key.
key = new RijndaelManaged();
System.IO.StreamWriter sw = new StreamWriter(@"E:\key.txt");
string text = System.Text.Encoding.Default.GetString(key.Key);
sw.Write(text);
// Load an XML document.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(fileName);
// Encrypt the element.
for (int i = 0; i < ElementList.Length; i++)
{
EncryptDC(xmlDoc, ElementList[i], key);
}
xmlDoc.Save(enFileName);
DecryptDC(enFileName, deFile, key);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
// Clear the key.
if (key != null)
{
key.Clear();
}
}
注意:以上保存密钥的代码是错误,在此段代码中加密和解密是在一起的,但是在实际应用中,是两个分开的过程。此处就不清楚密钥怎样保留,到解密时使用?请高手指点!
try
{
// Create a new Rijndael key.
key = new RijndaelManaged();
System.IO.StreamWriter sw = new StreamWriter(@"E:\key.txt");
string text = System.Text.Encoding.Default.GetString(key.Key);
sw.Write(text);
// Load an XML document.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(fileName);
// Encrypt the element.
for (int i = 0; i < ElementList.Length; i++)
{
EncryptDC(xmlDoc, ElementList[i], key);
}
xmlDoc.Save(enFileName);
DecryptDC(enFileName, deFile, key);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
// Clear the key.
if (key != null)
{
key.Clear();
}
}