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

📄 mainform.cs

📁 看到RSA加密的C++类下载的人不少
💻 CS
📖 第 1 页 / 共 3 页
字号:

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[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<Sanpack_rsa.hextxtlist.Count;i++)
						{
							Sanpack_rsa.RSA_san_dn_hexstring(System.Convert.ToString(Sanpack_rsa.hextxtlist[i]));

							for(uint j=0;j<Sanpack_rsa.RSAstep;j++)
							{
								bn.Write(Sanpack_rsa.get_result_byte(j));
							}
							progressBar1.Value=i+1;
							//ASCII code
							/*
							byte[] bs;
							string s=Sanpack_rsa.get_result_string();
							if (s=="")
							{
								bs = new byte[1];
								bs[0]=0;
							}
							else
							{
								bs = System.Text.Encoding.Default.GetBytes(s);
							}
							
							for(int j=0;j<Sanpack_rsa.RSAstep;j++)
							{
								bn.Write(bs[j]);
							}
							*/
							/* only one byte
							byte bs;
							bs=Sanpack_rsa.get_result_byte();
							bn.Write(bs);
							*/
						}
					}

					myStream.Close();

					textBox1.Text+="\r\n处理完成,新生成文件\r\n"+saveFileDialog1.FileName+"\r\n";
					progressBar1.Value=0;

				}
			}	
		}

		private void menuItem10_Click(object sender, System.EventArgs e)
		{
			if(Sanpack_rsa.charlist.Count==0)
			{
				emptymsg em=new emptymsg(this); 
				em.Show();
				return;
			}

			Stream myStream ;
			SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
			saveFileDialog1.Filter = "Hex text files (*.hextxt)|*.hextxt|All files (*.*)|*.*"  ;
			saveFileDialog1.FilterIndex = 1 ;
			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 (StreamWriter sw = new StreamWriter(myStream)) 
					{
						sw.WriteLine("# Sanpack.RSA.HexText");
						sw.WriteLine("#___________________________________________");

						Byte []b=new Byte[Sanpack_rsa.RSAstep];
						Sanpack_rsa.result_hexstrings.Clear();
						progressBar1.Minimum=0;
						progressBar1.Maximum=Sanpack_rsa.charlist.Count;
						for(int i=0;i<Sanpack_rsa.charlist.Count;i+=System.Convert.ToInt32(Sanpack_rsa.RSAstep))
						{
							for(int j=0;j<Sanpack_rsa.RSAstep;j++)
							{
								b[j]=System.Convert.ToByte(Sanpack_rsa.charlist[i+j]);
							}
							string s;
							//only ASCII file can use this
							//s=Sanpack_rsa.FromASCIIByteArray(b);
							//Sanpack_rsa.RSA_san_en(s,Sanpack_rsa.RSAstep);
							Sanpack_rsa.RSA_san_en(b,Sanpack_rsa.RSAstep);
							s=Sanpack_rsa.get_result_hexstring();
							Sanpack_rsa.result_hexstrings.Add(s);
							progressBar1.Value=i+1;
						}

						for(int i=0;i<Sanpack_rsa.result_hexstrings.Count;i++)
						{
							string hs=System.Convert.ToString(Sanpack_rsa.result_hexstrings[i]);
							if(hs==null||hs=="")sw.WriteLine("0");
							else sw.WriteLine(hs);
						}

						sw.WriteLine("#___________________________________________");
						sw.Write("# ");
						sw.WriteLine(DateTime.Now);

						Sanpack_rsa.result_hexstrings.Clear();

					}
					myStream.Close();

					textBox1.Text+="\r\n处理完成,新生成文件\r\n"+saveFileDialog1.FileName+"\r\n";
					progressBar1.Value=0;
				}
			}
		}

		private void menuItem2_Click(object sender, System.EventArgs e)
		{
			Stream myStream;
			OpenFileDialog openFileDialog1 = new OpenFileDialog();

			openFileDialog1.InitialDirectory = "c:\\" ;
			openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
			openFileDialog1.FilterIndex = 2 ;
			openFileDialog1.RestoreDirectory = true ;

			if(openFileDialog1.ShowDialog() == DialogResult.OK)
			{
				if((myStream = openFileDialog1.OpenFile())!= null)
				{
					if(File.Exists(openFileDialog1.FileName))
					{
						Sanpack_rsa.charlist.Clear();

						BinaryReader binReader = new BinaryReader(myStream);
						try
						{
							// If the file is not empty, 
							// read the application settings.
							if(binReader.PeekChar() != -1)
							{
								while(true)
								{
									Sanpack_rsa.charlist.Add(binReader.ReadByte());
								}
							}
						}

							// If the end of the stream is reached before reading
							// the four data values, ignore the error and use the
							// default settings for the remaining values.
						catch(EndOfStreamException excp)
						{
							textBox1.Text+="\r\n二进制字节流读取完毕,共读入"+Sanpack_rsa.charlist.Count.ToString()+
											"字节\r\n可以开始加解密操作:)\r\n";
								//+"\r\n异常为 " + excp.GetType().Name.ToString();
						}
						finally
						{
							binReader.Close();
						}
					}

					myStream.Close();
				}
			}

		}

		private void menuItem20_Click(object sender, System.EventArgs e)
		{
			Stream myStream ;
			SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
			saveFileDialog1.Filter = "RSAkey text files (*.rsakey)|*.rsakey|All files (*.*)|*.*"  ;
			saveFileDialog1.FilterIndex = 1 ;
			saveFileDialog1.RestoreDirectory = true ;
 
			if(saveFileDialog1.ShowDialog() == DialogResult.OK)
			{
				if((myStream=saveFileDialog1.OpenFile()) != null)
				{
					using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName+"_public"))
					{
						sw.WriteLine("# Sanpack.RSA.publickey");
						sw.WriteLine("#___________________________________________");
						sw.WriteLine(Sanpack_rsa.get_e());
						sw.WriteLine(Sanpack_rsa.get_n());
						sw.WriteLine("#___________________________________________");
						sw.Write("# ");
						sw.WriteLine(DateTime.Now);
					}
					using (StreamWriter sw = new StreamWriter(myStream)) 
					{
						sw.WriteLine("# Sanpack.RSA.privatekey");
						sw.WriteLine("# Always keep your private key in a safe place.");
						sw.WriteLine("#___________________________________________");
						sw.WriteLine(Sanpack_rsa.get_d());
						sw.WriteLine(Sanpack_rsa.get_n());
						sw.WriteLine("#___________________________________________");
						sw.Write("# ");
						sw.WriteLine(DateTime.Now);
					}
					myStream.Close();
					textBox1.Text+="\r\n公钥文件和私钥文件已经成功保存。\r\n";
				}
			}
		}

		private void menuItem7_Click(object sender, System.EventArgs e)
		{
			seteform sete = new seteform(this);
			sete.Show();
		}

		private void menuItem16_Click(object sender, System.EventArgs e)
		{
			about ab = new about(this);
			ab.Show();
		}

		public void menuItem22_Click(object sender, System.EventArgs e)
		{
			textBox1.Text+="\r\nRSA各参量当前值:\r\np="+Sanpack_rsa.get_p()+"\r\nq="+Sanpack_rsa.get_q()+"\r\nn="+
				Sanpack_rsa.get_n()+"\r\ne="+Sanpack_rsa.get_e()+"\r\nd="+Sanpack_rsa.get_d()+"\r\n";
		}

		private void menuItem24_Click(object sender, System.EventArgs e)
		{
			textBox1.Text="";
		}

		private void menuItem35_Click(object sender, System.EventArgs e)
		{
			Sanpack_rsa.charlist.Clear();
			Sanpack_rsa.hextxtlist.Clear();
			Sanpack_rsa.result_hexstrings.Clear();
			textBox1.Text+="\r\n缓存中的内容已经全部清除o(^0^)o\r\n";
		}

		private void menuItem3_Click_1(object sender, System.EventArgs e)
		{
			Stream myStream;
			OpenFileDialog openFileDialog1 = new OpenFileDialog();

			openFileDialog1.InitialDirectory = "c:\\" ;
			openFileDialog1.Filter = "Hex text files (*.hextxt)|*.hextxt|All files (*.*)|*.*" ;
			openFileDialog1.FilterIndex = 1 ;
			openFileDialog1.RestoreDirectory = true ;

			if(openFileDialog1.ShowDialog() == DialogResult.OK)
			{

⌨️ 快捷键说明

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