📄 asymmetricexample.cs
字号:
using System;
using System.Security.Cryptography;
using System.IO;
using System.Xml;
namespace CryptographyExamplesInCS
{
/// <summary>
/// Summary description for AsymmetricExample.
/// </summary>
public class AsymmetricExample
{
private string keyfilename = "c:\\AsymmetricKey.xml";
private string filename = "c:\\AsymmetricExample.xml";
private RSACryptoServiceProvider cryptoprovider = new RSACryptoServiceProvider(2048);
public string Server = "(local)";
public string Database = "Northwind";
public string User = "sa";
public string Password = "";
public string Provider = "SQLOLEDB";
public AsymmetricExample()
{
if(!System.IO.File.Exists(keyfilename))
{
FileStream filewriter = new FileStream(keyfilename, FileMode.Create);
XmlTextWriter xmlwriter = new XmlTextWriter(filewriter, System.Text.Encoding.UTF8);
xmlwriter.WriteRaw(cryptoprovider.ToXmlString(true));
xmlwriter.Close();
filewriter.Close();
}
else
{
FileStream filereader = new FileStream(keyfilename, FileMode.Open);
XmlTextReader xmlreader = new XmlTextReader(filereader);
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlreader);
cryptoprovider.FromXmlString(xmldoc.InnerXml);
}
}
public void Encrypt()
{
StringWriter memwriter = new StringWriter();
XmlTextWriter xmlwriter = new XmlTextWriter(memwriter);
xmlwriter.WriteStartDocument();
xmlwriter.WriteStartElement("Configuration");
xmlwriter.WriteStartElement("Data");
xmlwriter.WriteElementString("Server", Server);
xmlwriter.WriteElementString("Database", Database);
xmlwriter.WriteElementString("User", User);
xmlwriter.WriteElementString("Password", Password);
xmlwriter.WriteElementString("Provider", Provider);
xmlwriter.WriteEndElement();
xmlwriter.WriteEndElement();
xmlwriter.WriteEndDocument();
FileStream cryptowriter = new FileStream(filename, FileMode.Create);
string contents = memwriter.ToString();
byte[] xml = new byte[contents.Length];
for(int n=0;n<contents.Length;n++)
{
xml[n] = Convert.ToByte(contents[n]);
}
byte[] text = cryptoprovider.Encrypt(xml, false);
cryptowriter.Write(text, 0, text.Length);
cryptowriter.Close();
xmlwriter.Close();
memwriter.Close();
}
public void Decrypt()
{
if(!File.Exists(filename))
this.Encrypt();
FileStream filereader = new FileStream(filename, FileMode.Open);
byte[] contents = new byte[filereader.Length];
filereader.Read(contents, 0, System.Convert.ToInt32(filereader.Length));
byte[] xml = cryptoprovider.Decrypt(contents, false);
char[] text = new char[xml.Length];
xml.CopyTo(text, 0);
string stringtext = new string(text);
StringReader memreader = new StringReader(stringtext);
XmlTextReader xmlreader = new XmlTextReader(memreader);
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlreader);
string xpath = "/Configuration/Data/";
Server = xmldoc.SelectSingleNode(xpath + "Server").InnerText;
Database = xmldoc.SelectSingleNode(xpath + "Database").InnerText;
User = xmldoc.SelectSingleNode(xpath + "User").InnerText;
Password = xmldoc.SelectSingleNode(xpath + "Password").InnerText;
Provider = xmldoc.SelectSingleNode(xpath + "Provider").InnerText;
filereader.Close();
memreader.Close();
xmlreader.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -