⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symmetricexample.cs

📁 在C#中实现加密解密
💻 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 + -