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

📄 form1.cs

📁 对称钥匙的加密解密的例子
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Security.Cryptography;
using System.IO;



namespace WindowsApplication3
{
	/// <summary>
	/// Form1 的摘要说明。
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.TextBox textBox2;
		private System.Windows.Forms.Button button1;
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Windows 窗体设计器支持所必需的
			//
			InitializeComponent();

			//
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
			//
		}

		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows 窗体设计器生成的代码
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.textBox2 = new System.Windows.Forms.TextBox();
			this.button1 = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(72, 24);
			this.textBox1.Multiline = true;
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(496, 112);
			this.textBox1.TabIndex = 0;
			this.textBox1.Text = "textBox1";
			// 
			// textBox2
			// 
			this.textBox2.Location = new System.Drawing.Point(72, 152);
			this.textBox2.Multiline = true;
			this.textBox2.Name = "textBox2";
			this.textBox2.Size = new System.Drawing.Size(496, 144);
			this.textBox2.TabIndex = 1;
			this.textBox2.Text = "textBox2";
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(240, 320);
			this.button1.Name = "button1";
			this.button1.TabIndex = 2;
			this.button1.Text = "button1";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(640, 373);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.textBox2);
			this.Controls.Add(this.textBox1);
			this.Name = "Form1";
			this.Text = "Form1";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			byte[] PublicKey = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,
								   74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,
								   207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,
								   108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,
								   240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,
								   168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,
								   38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,
								   106,99,179,68,175,211,164,116,64,148,226,254,172,147};

			string original = "This is a much longer string of data than a public/private key algorithm will accept.";
			string roundtrip;
			ASCIIEncoding textConverter = new ASCIIEncoding();
			RijndaelManaged myRijndael = new RijndaelManaged();
//			RC2CryptoServiceProvider myRijndael = new RC2CryptoServiceProvider();
//			DES myRijndael = new DESCryptoServiceProvider();

			byte[] fromEncrypt;
			byte[] encrypted;
			byte[] toEncrypt;
			byte[] key;
			byte[] IV;

			//Create a new key and initialization vector.
			myRijndael.GenerateKey();
			myRijndael.GenerateIV();

			//Get the key and IV.
			key = myRijndael.Key;
			IV = myRijndael.IV;

			//Get an encryptor.
//			ICryptoTransform encryptor = myRijndael.CreateEncryptor(key, IV);
//
//			TripleDESCryptoServiceProvider myRijndael = new TripleDESCryptoServiceProvider();
//
//			myRijndael.GenerateKey();
//			myRijndael.GenerateIV();
//
//			key = myRijndael.Key;
//			IV = myRijndael.IV;

			ICryptoTransform encryptor = myRijndael.CreateEncryptor(key,IV);
			//Encrypt the data.
			MemoryStream msEncrypt = new MemoryStream();
			CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

			//Convert the data to a byte array.
			toEncrypt = textConverter.GetBytes(original);

			//Write all data to the crypto stream and flush it.
			csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
			csEncrypt.FlushFinalBlock();

			//Get encrypted array of bytes.
			encrypted = msEncrypt.ToArray();

			//This is where the message would be transmitted to a recipient
			// who already knows your secret key. Optionally, you can
			// also encrypt your secret key using a public key algorithm
			// and pass it to the mesage recipient along with the RijnDael
			// encrypted message.            

			//Get a decryptor that uses the same key and IV as the encryptor.
			ICryptoTransform decryptor = myRijndael.CreateDecryptor(key, IV);

			//Now decrypt the previously encrypted message using the decryptor
			// obtained in the above step.
			MemoryStream msDecrypt = new MemoryStream(encrypted);
			CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

			fromEncrypt = new byte[encrypted.Length];

			//Read the data out of the crypto stream.
			csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);

			//Convert the byte array back into a string.
			roundtrip = textConverter.GetString(fromEncrypt);

			textBox1.Text = original;
			textBox2.Text = roundtrip;

		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -