📄 symmetricexample.cs
字号:
using System;
using System.Xml;
using System.IO;
using System.Security.Cryptography;
using System.Windows;
using System.Windows.Forms;
namespace CryptographyExamplesInCS
{
/// <summary>
/// Summary description for SymmetricExample.
/// </summary>
public class SymmetricExample : System.Object
{
private byte[] key = {11, 2, 7, 24, 16, 22, 4, 38, 27, 3, 11, 10, 17, 15, 06, 23};
private byte[] iv = {1, 2, 3, 4, 5, 6, 17, 8, 9, 10, 11, 12, 13, 14, 15, 16};
private RijndaelManaged cryptoprovider = new RijndaelManaged();
private string filename = "c:\\SymmetricExample.xml";
public string Server = "(local)";
public string Database = "Northwind";
public string User = "sa";
public string Password = "";
public string Provider = "SQLOLEDB";
public SymmetricExample()
{
}
public void Decrypt()
{
if(!File.Exists(filename))
this.Encrypt();
try
{
FileStream filereader = new FileStream(filename, FileMode.Open);
CryptoStream cryptoreader = new CryptoStream(filereader, cryptoprovider.CreateDecryptor(key, iv), CryptoStreamMode.Read);
XmlTextReader xmlreader = new XmlTextReader(cryptoreader);
XmlDocument xmldoc = new XmlDocument();
string xpath = "/Configuration/Data/";
xmldoc.Load(xmlreader);
xmlreader.Close();
cryptoreader.Close();
filereader.Close();
this.Server = xmldoc.SelectSingleNode(xpath + "Server").InnerText;
this.Database = xmldoc.SelectSingleNode(xpath + "Database").InnerText;
this.User = xmldoc.SelectSingleNode(xpath + "User").InnerText;
this.Password = xmldoc.SelectSingleNode(xpath + "Password").InnerText;
this.Provider = xmldoc.SelectSingleNode(xpath + "Provider").InnerText;
}
catch(CryptographicException e)
{
this.Server = "";
this.Database = "";
this.Provider = "";
this.User = "";
this.Password = "";
MessageBox.Show("Invalid encryption key!\nDetails: " + e.Message, "Cryptography Example",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch(ArgumentException e)
{
this.Server = "";
this.Database = "";
this.Provider = "";
this.User = "";
this.Password = "";
MessageBox.Show("Invalid encryption key!\nDetails: " + e.Message, "Cryptography Example",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void Encrypt()
{
FileStream filewriter = new FileStream(filename, FileMode.Create);
CryptoStream cryptowriter = new CryptoStream(filewriter, cryptoprovider.CreateEncryptor(key, iv), CryptoStreamMode.Write);
XmlTextWriter xmlwriter = new XmlTextWriter(cryptowriter, System.Text.Encoding.UTF8);
xmlwriter.WriteStartDocument();
xmlwriter.WriteStartElement("Configuration");
xmlwriter.WriteStartElement("Data");
xmlwriter.WriteElementString("Server", this.Server);
xmlwriter.WriteElementString("Database", this.Database);
xmlwriter.WriteElementString("User", this.User);
xmlwriter.WriteElementString("Password", this.Password);
xmlwriter.WriteElementString("Provider", this.Provider);
xmlwriter.WriteEndElement();
xmlwriter.WriteEndElement();
xmlwriter.WriteEndDocument();
xmlwriter.Close();
cryptowriter.Close();
filewriter.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -