www.pudn.com > sanpack_rsa_vs2003sln_src.rar > mainform.cs


using System; 
using System.Drawing; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
using System.IO; 
using System.Diagnostics; 
using sanpack_rsa_csclass; 
 
namespace sanpack_rsa_dotnet11 
{ 
	///  
	/// Form1 的摘要说明。 
	///  
	public class RSAform : System.Windows.Forms.Form 
	{ 
		private System.Windows.Forms.MainMenu mainMenu1; 
		private System.Windows.Forms.MenuItem menuItem1; 
		private System.Windows.Forms.MenuItem menuItem2; 
		private System.Windows.Forms.MenuItem menuItem4; 
		private System.Windows.Forms.MenuItem menuItem5; 
		private System.Windows.Forms.MenuItem menuItem6; 
		private System.Windows.Forms.MenuItem menuItem7; 
		private System.Windows.Forms.MenuItem menuItem8; 
		private System.Windows.Forms.MenuItem menuItem10; 
		private System.Windows.Forms.MenuItem menuItem9; 
		private System.Windows.Forms.MenuItem menuItem11; 
		private System.Windows.Forms.MenuItem menuItem12; 
		private System.Windows.Forms.MenuItem menuItem15; 
		private System.Windows.Forms.MenuItem menuItem13; 
		private System.Windows.Forms.MenuItem menuItem16; 
		private System.Windows.Forms.TextBox textBox1; 
		private System.Windows.Forms.MenuItem menuItem18; 
		private System.Windows.Forms.MenuItem menuItem19; 
		private System.Windows.Forms.MenuItem menuItem20; 
		private System.Windows.Forms.MenuItem menuItem21; 
		private System.Windows.Forms.MenuItem menuItem22; 
		private System.Windows.Forms.MenuItem menuItem23; 
		private System.Windows.Forms.MenuItem menuItem27; 
		private System.Windows.Forms.MenuItem menuItem24; 
		private System.Windows.Forms.MenuItem menuItem29; 
		private System.Windows.Forms.MenuItem menuItem28; 
		private System.Windows.Forms.MenuItem menuItem3; 
		private System.Windows.Forms.MenuItem menuItem32; 
		private System.Windows.Forms.MenuItem menuItem33; 
		private System.Windows.Forms.MenuItem menuItem34; 
		private System.Windows.Forms.MenuItem menuItem35; 
		private System.Windows.Forms.MenuItem menuItem25; 
		private System.Windows.Forms.MenuItem menuItem26; 
		private System.Windows.Forms.MenuItem menuItem30; 
		private System.Windows.Forms.ProgressBar progressBar1; 
		///  
		/// 必需的设计器变量。 
		///  
		private System.ComponentModel.Container components = null; 
 
		public RSAform() 
		{ 
			// 
			// Windows 窗体设计器支持所必需的 
			// 
			InitializeComponent(); 
 
			// 
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
			// 
		} 
 
		///  
		/// 清理所有正在使用的资源。 
		///  
		protected override void Dispose( bool disposing ) 
		{ 
			if( disposing ) 
			{ 
				if (components != null)  
				{ 
					components.Dispose(); 
				} 
			} 
			base.Dispose( disposing ); 
		} 
 
		#region Windows 窗体设计器生成的代码 
		///  
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改 
		/// 此方法的内容。 
		///  
		private void InitializeComponent() 
		{ 
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(RSAform)); 
			this.mainMenu1 = new System.Windows.Forms.MainMenu(); 
			this.menuItem1 = new System.Windows.Forms.MenuItem(); 
			this.menuItem2 = new System.Windows.Forms.MenuItem(); 
			this.menuItem3 = new System.Windows.Forms.MenuItem(); 
			this.menuItem9 = new System.Windows.Forms.MenuItem(); 
			this.menuItem11 = new System.Windows.Forms.MenuItem(); 
			this.menuItem20 = new System.Windows.Forms.MenuItem(); 
			this.menuItem28 = new System.Windows.Forms.MenuItem(); 
			this.menuItem30 = new System.Windows.Forms.MenuItem(); 
			this.menuItem4 = new System.Windows.Forms.MenuItem(); 
			this.menuItem5 = new System.Windows.Forms.MenuItem(); 
			this.menuItem21 = new System.Windows.Forms.MenuItem(); 
			this.menuItem6 = new System.Windows.Forms.MenuItem(); 
			this.menuItem22 = new System.Windows.Forms.MenuItem(); 
			this.menuItem7 = new System.Windows.Forms.MenuItem(); 
			this.menuItem19 = new System.Windows.Forms.MenuItem(); 
			this.menuItem23 = new System.Windows.Forms.MenuItem(); 
			this.menuItem27 = new System.Windows.Forms.MenuItem(); 
			this.menuItem10 = new System.Windows.Forms.MenuItem(); 
			this.menuItem25 = new System.Windows.Forms.MenuItem(); 
			this.menuItem8 = new System.Windows.Forms.MenuItem(); 
			this.menuItem26 = new System.Windows.Forms.MenuItem(); 
			this.menuItem29 = new System.Windows.Forms.MenuItem(); 
			this.menuItem24 = new System.Windows.Forms.MenuItem(); 
			this.menuItem35 = new System.Windows.Forms.MenuItem(); 
			this.menuItem18 = new System.Windows.Forms.MenuItem(); 
			this.menuItem32 = new System.Windows.Forms.MenuItem(); 
			this.menuItem33 = new System.Windows.Forms.MenuItem(); 
			this.menuItem34 = new System.Windows.Forms.MenuItem(); 
			this.menuItem12 = new System.Windows.Forms.MenuItem(); 
			this.menuItem15 = new System.Windows.Forms.MenuItem(); 
			this.menuItem13 = new System.Windows.Forms.MenuItem(); 
			this.menuItem16 = new System.Windows.Forms.MenuItem(); 
			this.textBox1 = new System.Windows.Forms.TextBox(); 
			this.progressBar1 = new System.Windows.Forms.ProgressBar(); 
			this.SuspendLayout(); 
			//  
			// mainMenu1 
			//  
			this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
																					  this.menuItem1, 
																					  this.menuItem5, 
																					  this.menuItem32, 
																					  this.menuItem12}); 
			//  
			// menuItem1 
			//  
			this.menuItem1.Index = 0; 
			this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
																					  this.menuItem2, 
																					  this.menuItem3, 
																					  this.menuItem9, 
																					  this.menuItem11, 
																					  this.menuItem20, 
																					  this.menuItem28, 
																					  this.menuItem30, 
																					  this.menuItem4}); 
			this.menuItem1.Text = "文件(&F)"; 
			this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click); 
			//  
			// menuItem2 
			//  
			this.menuItem2.Index = 0; 
			this.menuItem2.Text = "载入任意待加密文件(字节流)"; 
			this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click); 
			//  
			// menuItem3 
			//  
			this.menuItem3.Index = 1; 
			this.menuItem3.Text = "载入以往生成的HEX文本文件"; 
			this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click_1); 
			//  
			// menuItem9 
			//  
			this.menuItem9.Enabled = false; 
			this.menuItem9.Index = 2; 
			this.menuItem9.Text = "打开素数表文件"; 
			this.menuItem9.Click += new System.EventHandler(this.menuItem9_Click); 
			//  
			// menuItem11 
			//  
			this.menuItem11.Enabled = false; 
			this.menuItem11.Index = 3; 
			this.menuItem11.Text = "保存素数表文件"; 
			this.menuItem11.Click += new System.EventHandler(this.menuItem11_Click); 
			//  
			// menuItem20 
			//  
			this.menuItem20.Index = 4; 
			this.menuItem20.Text = "保存当前公私钥"; 
			this.menuItem20.Click += new System.EventHandler(this.menuItem20_Click); 
			//  
			// menuItem28 
			//  
			this.menuItem28.Index = 5; 
			this.menuItem28.Text = "从文件载入公钥"; 
			this.menuItem28.Click += new System.EventHandler(this.menuItem28_Click); 
			//  
			// menuItem30 
			//  
			this.menuItem30.Index = 6; 
			this.menuItem30.Text = "从文件载入私钥"; 
			this.menuItem30.Click += new System.EventHandler(this.menuItem30_Click); 
			//  
			// menuItem4 
			//  
			this.menuItem4.Index = 7; 
			this.menuItem4.Text = "退出"; 
			this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click); 
			//  
			// menuItem5 
			//  
			this.menuItem5.Index = 1; 
			this.menuItem5.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
																					  this.menuItem21, 
																					  this.menuItem6, 
																					  this.menuItem22, 
																					  this.menuItem7, 
																					  this.menuItem19, 
																					  this.menuItem23, 
																					  this.menuItem27, 
																					  this.menuItem10, 
																					  this.menuItem25, 
																					  this.menuItem8, 
																					  this.menuItem26, 
																					  this.menuItem29, 
																					  this.menuItem24, 
																					  this.menuItem35, 
																					  this.menuItem18}); 
			this.menuItem5.Text = "操作(&E)"; 
			this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click); 
			//  
			// menuItem21 
			//  
			this.menuItem21.Enabled = false; 
			this.menuItem21.Index = 0; 
			this.menuItem21.Text = "使用预定义素数表"; 
			this.menuItem21.Click += new System.EventHandler(this.menuItem21_Click); 
			//  
			// menuItem6 
			//  
			this.menuItem6.Enabled = false; 
			this.menuItem6.Index = 1; 
			this.menuItem6.Text = "素数表扩大更新"; 
			this.menuItem6.Click += new System.EventHandler(this.menuItem6_Click); 
			//  
			// menuItem22 
			//  
			this.menuItem22.Index = 2; 
			this.menuItem22.Text = "显示当前各参量值"; 
			this.menuItem22.Click += new System.EventHandler(this.menuItem22_Click); 
			//  
			// menuItem7 
			//  
			this.menuItem7.Index = 3; 
			this.menuItem7.Text = "设定当前公钥并重新计算私钥"; 
			this.menuItem7.Click += new System.EventHandler(this.menuItem7_Click); 
			//  
			// menuItem19 
			//  
			this.menuItem19.Index = 4; 
			this.menuItem19.Text = "随机设定素数并重新计算密钥"; 
			this.menuItem19.Click += new System.EventHandler(this.menuItem19_Click); 
			//  
			// menuItem23 
			//  
			this.menuItem23.Enabled = false; 
			this.menuItem23.Index = 5; 
			this.menuItem23.Text = "手动设定素数并重新计算密钥"; 
			this.menuItem23.Click += new System.EventHandler(this.menuItem23_Click); 
			//  
			// menuItem27 
			//  
			this.menuItem27.Index = 6; 
			this.menuItem27.Text = "-"; 
			//  
			// menuItem10 
			//  
			this.menuItem10.Index = 7; 
			this.menuItem10.Text = "公钥加密载入的字节流"; 
			this.menuItem10.Click += new System.EventHandler(this.menuItem10_Click); 
			//  
			// menuItem25 
			//  
			this.menuItem25.Index = 8; 
			this.menuItem25.Text = "私钥加密载入的字节流"; 
			this.menuItem25.Click += new System.EventHandler(this.menuItem25_Click); 
			//  
			// menuItem8 
			//  
			this.menuItem8.Index = 9; 
			this.menuItem8.Text = "私钥解密载入的HEX文本"; 
			this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click); 
			//  
			// menuItem26 
			//  
			this.menuItem26.Index = 10; 
			this.menuItem26.Text = "公钥解密载入的HEX文本"; 
			this.menuItem26.Click += new System.EventHandler(this.menuItem26_Click); 
			//  
			// menuItem29 
			//  
			this.menuItem29.Index = 11; 
			this.menuItem29.Text = "-"; 
			//  
			// menuItem24 
			//  
			this.menuItem24.Index = 12; 
			this.menuItem24.Text = "清空提示窗内容"; 
			this.menuItem24.Click += new System.EventHandler(this.menuItem24_Click); 
			//  
			// menuItem35 
			//  
			this.menuItem35.Index = 13; 
			this.menuItem35.Text = "清除载入的内容"; 
			this.menuItem35.Click += new System.EventHandler(this.menuItem35_Click); 
			//  
			// menuItem18 
			//  
			this.menuItem18.Index = 14; 
			this.menuItem18.Text = "启用文本编辑"; 
			this.menuItem18.Visible = false; 
			this.menuItem18.Click += new System.EventHandler(this.menuItem18_Click); 
			//  
			// menuItem32 
			//  
			this.menuItem32.Index = 2; 
			this.menuItem32.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
																					   this.menuItem33, 
																					   this.menuItem34}); 
			this.menuItem32.Text = "设定(&C)"; 
			//  
			// menuItem33 
			//  
			this.menuItem33.Index = 0; 
			this.menuItem33.Text = "RSA各种位数设定"; 
			this.menuItem33.Click += new System.EventHandler(this.menuItem33_Click); 
			//  
			// menuItem34 
			//  
			this.menuItem34.Enabled = false; 
			this.menuItem34.Index = 1; 
			this.menuItem34.Text = "sanPack设置面板"; 
			this.menuItem34.Click += new System.EventHandler(this.menuItem34_Click); 
			//  
			// menuItem12 
			//  
			this.menuItem12.Index = 3; 
			this.menuItem12.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
																					   this.menuItem15, 
																					   this.menuItem13, 
																					   this.menuItem16}); 
			this.menuItem12.Text = "帮助(&H)"; 
			//  
			// menuItem15 
			//  
			this.menuItem15.Index = 0; 
			this.menuItem15.Text = "使用帮助和sanPack的其他组件"; 
			this.menuItem15.Click += new System.EventHandler(this.menuItem15_Click); 
			//  
			// menuItem13 
			//  
			this.menuItem13.Index = 1; 
			this.menuItem13.Text = "开发文档"; 
			this.menuItem13.Click += new System.EventHandler(this.menuItem13_Click); 
			//  
			// menuItem16 
			//  
			this.menuItem16.Index = 2; 
			this.menuItem16.Text = "关于sanPack"; 
			this.menuItem16.Click += new System.EventHandler(this.menuItem16_Click); 
			//  
			// textBox1 
			//  
			this.textBox1.Location = new System.Drawing.Point(0, 0); 
			this.textBox1.MaxLength = 1000000; 
			this.textBox1.Multiline = true; 
			this.textBox1.Name = "textBox1"; 
			this.textBox1.ReadOnly = true; 
			this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 
			this.textBox1.Size = new System.Drawing.Size(416, 216); 
			this.textBox1.TabIndex = 0; 
			this.textBox1.Text = ""; 
			this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); 
			//  
			// progressBar1 
			//  
			this.progressBar1.Location = new System.Drawing.Point(0, 224); 
			this.progressBar1.Name = "progressBar1"; 
			this.progressBar1.Size = new System.Drawing.Size(408, 16); 
			this.progressBar1.TabIndex = 1; 
			//  
			// RSAform 
			//  
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
			this.ClientSize = new System.Drawing.Size(416, 241); 
			this.Controls.Add(this.progressBar1); 
			this.Controls.Add(this.textBox1); 
			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 
			this.Menu = this.mainMenu1; 
			this.Name = "RSAform"; 
			this.Text = "RSA encrypter -sanPack"; 
			this.Closing += new System.ComponentModel.CancelEventHandler(this.RSAform_Closing); 
			this.SizeChanged += new System.EventHandler(this.RSAform_SizeChanged); 
			this.Load += new System.EventHandler(this.RSAform_Load); 
			this.ResumeLayout(false); 
 
		} 
		#endregion 
 
		///  
		/// 应用程序的主入口点。 
		///  
		[STAThread] 
		static void Main()  
		{ 
			Application.Run(new RSAform()); 
		} 
 
		private void RSAform_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
		{ 
			Sanpack_rsa.finish_RSA_san(); 
		} 
		private void RSAform_Load(object sender, System.EventArgs e) 
		{ 
			 
			title tl = new title(); 
			tl.Show(); 
			 
			//create RSA class' object 
			Sanpack_rsa.start_RSA_san(); 
 
			//random p,q start length 
			Sanpack_rsa.RSAprimeplen1=35; 
			Sanpack_rsa.RSAprimeplen2=35; 
 
			//random p q 
			Sanpack_rsa.GetRandomString(); 
 
			textBox1.Text+="\r\n用于生成素数的起点1:\r\n"+Sanpack_rsa.string2hexstring(Sanpack_rsa.s1)+"\r\n"+ 
							"用于生成素数的起点2:\r\n"+Sanpack_rsa.string2hexstring(Sanpack_rsa.s2)+"\r\n"; 
			 
			//测试用固定值 
			//s1="1234567890qwertyuiopasdfghjklzxcvbnm"; 
			//s2="98sazxe765oplkjv432hgc10qwfuibdrtynm"; 
			 
			Sanpack_rsa.refresh_RSA_san(Sanpack_rsa.s1,Sanpack_rsa.s2); 
	 
			//set RSA uint length (byte) 
			Sanpack_rsa.RSAstep=1; 
 
			this.SetDesktopLocation(Screen.PrimaryScreen.WorkingArea.Width/2-this.Size.Width/2, 
				Screen.PrimaryScreen.WorkingArea.Height/2-this.Size.Height/2); 
 
			tl.Close(); 
			tl.Dispose(); 
 
			textBox1.Text+= 
			"\r\n欢迎使用sanPack RSA文件加密组件:)\r\n请随时保管好您的密钥\r\n我是提示窗,我将输出所进行的操作详情\r\n"; 
			 
			textBox1.Select(0,0); 
 
		} 
 
		private void RSAform_SizeChanged(object sender, System.EventArgs e) 
		{ 
			textBox1.SetBounds(0,0,this.Size.Width-10,this.Size.Height-70); 
			progressBar1.SetBounds(0,textBox1.Size.Height+5,this.Size.Width-10,18); 
		} 
 
		private void textBox1_TextChanged(object sender, System.EventArgs e) 
		{ 
			textBox1.AppendText(""); 
			textBox1.ScrollToCaret(); 
		} 
 
		private void menuItem18_Click(object sender, System.EventArgs e) 
		{ 
			if(textBox1.ReadOnly == true) 
			{ 
				textBox1.ReadOnly=false; 
				menuItem18.Text="禁用文本编辑"; 
			} 
			else 
			{ 
				textBox1.ReadOnly=true; 
				menuItem18.Text="启用文本编辑"; 
			} 
		} 
 
		private void menuItem19_Click(object sender, System.EventArgs e) 
		{ 
			//random p q 
			Sanpack_rsa.GetRandomString(); 
 
			textBox1.Text+="\r\n用于生成素数的起点1:\r\n"+Sanpack_rsa.string2hexstring(Sanpack_rsa.s1)+"\r\n"+ 
				"用于生成素数的起点2:\r\n"+Sanpack_rsa.string2hexstring(Sanpack_rsa.s2)+"\r\n"; 
			 
			Sanpack_rsa.refresh_RSA_san(Sanpack_rsa.s1,Sanpack_rsa.s2);	 
 
			menuItem22_Click(sender,e); 
		} 
 
		private void menuItem4_Click(object sender, System.EventArgs e) 
		{ 
			this.Close(); 
			this.Dispose(); 
		} 
 
		private void menuItem21_Click(object sender, System.EventArgs e) 
		{ 
			if(menuItem6.Enabled==true) 
			{ 
				menuItem6.Enabled=false; 
				menuItem9.Enabled=false; 
				menuItem11.Enabled=false; 
				menuItem21.Text="使用预定义素数表"; 
			} 
			else 
			{ 
				menuItem6.Enabled=true; 
				menuItem9.Enabled=true; 
				menuItem11.Enabled=true; 
				menuItem21.Text="禁用预定义素数表"; 
			} 
		} 
 
		private void menuItem8_Click(object sender, System.EventArgs e) 
		{ 
			if(Sanpack_rsa.hextxtlist.Count==0) 
			{ 
				emptymsg em=new emptymsg(this);  
				em.Show(); 
				return; 
			} 
 
			Stream myStream ; 
			SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
  
			saveFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"  ; 
			saveFileDialog1.FilterIndex = 2 ; 
			saveFileDialog1.RestoreDirectory = true ; 
  
			if(saveFileDialog1.ShowDialog() == DialogResult.OK) 
			{ 
				if((myStream=saveFileDialog1.OpenFile()) != null) 
				{ 
					textBox1.Text+="\r\n正在对十六进制文本进行处理,请稍候:)\r\n"; 
					System.Threading.Thread.Sleep(500); 
					using (BinaryWriter bn = new BinaryWriter(myStream)) 
					{ 
						progressBar1.Minimum=0; 
						progressBar1.Maximum=Sanpack_rsa.hextxtlist.Count; 
						for(int i=0;i