📄 mainform.cs
字号:
}
#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 + -