C#非对称加密程序
发布日期:2021-06-30 19:11:29
浏览次数:3
分类:技术文章
本文共 11226 字,大约阅读时间需要 37 分钟。
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Text; using System.Security.Cryptography; namespace 非对称加密 { /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TabControl tabControl1; private System.Windows.Forms.TabPage tabPage1; private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button3; private System.Windows.Forms.SaveFileDialog save; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button4; private System.Windows.Forms.Button button5; private System.Windows.Forms.Label label2; private System.Windows.Forms.RichTextBox richtext2; private System.Windows.Forms.OpenFileDialog open; private System.Windows.Forms.Label label3; private System.Windows.Forms.RichTextBox richtext3; private System.Windows.Forms.RichTextBox richtext; private System.Windows.Forms.Button button6; private System.Windows.Forms.Button button7; private System.Windows.Forms.Button button8; /// <summary> /// 必需的设计器变量。 private static RSACryptoServiceProvider crypt; private static string privatekey; private static string publickey; private static byte [] bytes; private static string publicinfo; private static string privateinfo; private static string readpublickey; private static string readprivatekey; // ///private static byte [] onebytes ; /// </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.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.button6 = new System.Windows.Forms.Button(); this.button3 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.richtext = new System.Windows.Forms.RichTextBox(); this.button1 = new System.Windows.Forms.Button(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.button8 = new System.Windows.Forms.Button(); this.button7 = new System.Windows.Forms.Button(); this.label3 = new System.Windows.Forms.Label(); this.richtext3 = new System.Windows.Forms.RichTextBox(); this.label2 = new System.Windows.Forms.Label(); this.richtext2 = new System.Windows.Forms.RichTextBox(); this.button5 = new System.Windows.Forms.Button(); this.button4 = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.save = new System.Windows.Forms.SaveFileDialog(); this.open = new System.Windows.Forms.OpenFileDialog(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.tabPage2.SuspendLayout(); this.SuspendLayout(); // // tabControl1 // this.tabControl1.Controls.Add(this.tabPage1); this.tabControl1.Controls.Add(this.tabPage2); this.tabControl1.Location = new System.Drawing.Point(32, 64); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; this.tabControl1.Size = new System.Drawing.Size(416, 280); this.tabControl1.TabIndex = 0; // // tabPage1 // this.tabPage1.Controls.Add(this.button6); this.tabPage1.Controls.Add(this.button3); this.tabPage1.Controls.Add(this.button2); this.tabPage1.Controls.Add(this.richtext); this.tabPage1.Controls.Add(this.button1); this.tabPage1.Location = new System.Drawing.Point(4, 21); this.tabPage1.Name = "tabPage1"; this.tabPage1.Size = new System.Drawing.Size(408, 255); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "得到钥匙"; // // button6 // this.button6.Location = new System.Drawing.Point(72, 168); this.button6.Name = "button6"; this.button6.TabIndex = 4; this.button6.Text = "写入文件"; this.button6.Click += new System.EventHandler(this.button6_Click); // // button3 // this.button3.Location = new System.Drawing.Point(200, 16); this.button3.Name = "button3"; this.button3.TabIndex = 3; this.button3.Text = "保存私匙"; this.button3.Click += new System.EventHandler(this.button3_Click); // // button2 // this.button2.Location = new System.Drawing.Point(128, 16); this.button2.Name = "button2"; this.button2.TabIndex = 2; this.button2.Text = "保存公钥"; this.button2.Click += new System.EventHandler(this.button2_Click); // // richtext // this.richtext.Location = new System.Drawing.Point(16, 56); this.richtext.Name = "richtext"; this.richtext.Size = new System.Drawing.Size(256, 96); this.richtext.TabIndex = 1; this.richtext.Text = "richTextBox1"; // // button1 // this.button1.Location = new System.Drawing.Point(8, 16); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(88, 23); this.button1.TabIndex = 0; this.button1.Text = "得到钥匙信息"; this.button1.Click += new System.EventHandler(this.button1_Click); // // tabPage2 // this.tabPage2.Controls.Add(this.button8); this.tabPage2.Controls.Add(this.button7); this.tabPage2.Controls.Add(this.label3); this.tabPage2.Controls.Add(this.richtext3); this.tabPage2.Controls.Add(this.label2); this.tabPage2.Controls.Add(this.richtext2); this.tabPage2.Controls.Add(this.button5); this.tabPage2.Controls.Add(this.button4); this.tabPage2.Controls.Add(this.textBox1); this.tabPage2.Controls.Add(this.label1); this.tabPage2.Location = new System.Drawing.Point(4, 21); this.tabPage2.Name = "tabPage2"; this.tabPage2.Size = new System.Drawing.Size(408, 255); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "加密解密文字"; // // button8 // this.button8.Location = new System.Drawing.Point(216, 72); this.button8.Name = "button8"; this.button8.TabIndex = 9; this.button8.Text = "读取私匙"; this.button8.Click += new System.EventHandler(this.button8_Click); // // button7 // this.button7.Location = new System.Drawing.Point(56, 72); this.button7.Name = "button7"; this.button7.TabIndex = 8; this.button7.Text = "读取公匙"; this.button7.Click += new System.EventHandler(this.button7_Click); // // label3 // this.label3.Location = new System.Drawing.Point(200, 120); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(100, 16); this.label3.TabIndex = 7; this.label3.Text = "解密结果"; // // richtext3 // this.richtext3.Location = new System.Drawing.Point(200, 144); this.richtext3.Name = "richtext3"; this.richtext3.Size = new System.Drawing.Size(120, 72); this.richtext3.TabIndex = 6; this.richtext3.Text = "richTextBox2"; // // label2 // this.label2.Location = new System.Drawing.Point(48, 120); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(128, 16); this.label2.TabIndex = 5; this.label2.Text = "加密窗口:"; // // richtext2 // this.richtext2.Location = new System.Drawing.Point(40, 144); this.richtext2.Name = "richtext2"; this.richtext2.Size = new System.Drawing.Size(120, 72); this.richtext2.TabIndex = 4; this.richtext2.Text = "richTextBox2"; // // button5 // this.button5.Location = new System.Drawing.Point(200, 96); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(112, 23); this.button5.TabIndex = 3; this.button5.Text = "使用私匙解密"; this.button5.Click += new System.EventHandler(this.button5_Click); // // button4 // this.button4.Location = new System.Drawing.Point(48, 96); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(96, 23); this.button4.TabIndex = 2; this.button4.Text = "使用公匙加密"; this.button4.Click += new System.EventHandler(this.button4_Click); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(104, 32); this.textBox1.Multiline = true; this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(168, 32); this.textBox1.TabIndex = 1; this.textBox1.Text = "textBox1"; // // label1 // this.label1.Location = new System.Drawing.Point(128, 8); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(120, 16); this.label1.TabIndex = 0; this.label1.Text = "请输入加密的文字"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(504, 357); this.Controls.Add(this.tabControl1); this.Name = "Form1"; this.Text = "Form1"; this.tabControl1.ResumeLayout(false); this.tabPage1.ResumeLayout(false); this.tabPage2.ResumeLayout(false); this.ResumeLayout(false); } #endregion /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } //得到钥匙信息 private void button1_Click(object sender, System.EventArgs e) { crypt=new RSACryptoServiceProvider(); publickey=crypt.ToXmlString(false); richtext.Text="导出秘匙的情况下:/n"+publickey+"/n"; privatekey=crypt.ToXmlString(true); string info="仅仅导出公匙的情况下:/n"+privatekey+"/n"; richtext.AppendText(info); crypt.Clear(); } //保存公匙信息 private void button2_Click(object sender, System.EventArgs e) { save=new SaveFileDialog(); save.Filter="File Text (*.txt)|*.txt|All File (*.*)|*.*"; save.ShowDialog(); publicinfo=save.FileName; } //保存密匙信息 private void button3_Click(object sender, System.EventArgs e) { save=new SaveFileDialog(); save.Filter="File Text (*.txt)|*.txt|All File (*.*)|*.*"; save.ShowDialog(); privateinfo=save.FileName; } //把钥匙信息写入文件 private void button6_Click(object sender, System.EventArgs e) { StreamWriter one=new StreamWriter(publicinfo,true,UTF8Encoding.UTF8); one.Write(publickey); StreamWriter two=new StreamWriter(privateinfo,true,UTF8Encoding.UTF8); two.Write(privatekey); one.Flush(); two.Flush(); one.Close(); two.Close(); MessageBox.Show("成功保存公匙和密匙!"); } //用公匙加密 private void button4_Click(object sender, System.EventArgs e) { crypt=new RSACryptoServiceProvider(); UTF8Encoding enc=new UTF8Encoding(); bytes=enc.GetBytes(textBox1.Text); crypt.FromXmlString( readpublickey ); bytes = crypt.Encrypt( bytes,false ); string encryttext=enc.GetString(bytes);//encryptbyte); richtext2.Text="加密结果:/n"+encryttext+"/n"+"加密结束!"; } private void button5_Click(object sender, System.EventArgs e) { UTF8Encoding enc=new UTF8Encoding(); byte [] decryptbyte; crypt.FromXmlString ( readprivatekey ) ; decryptbyte = crypt.Decrypt( bytes,false ); string decrypttext=enc.GetString( decryptbyte ); richtext3.Text = "解密结果:/n" + decrypttext + "/n" + "解密结束!" ; } //从文件中读取公匙信息 private void button7_Click(object sender, System.EventArgs e) { StreamReader sr ; open = new OpenFileDialog( ); open.Filter="Text File (*.txt)|*.txt|All File (*.*)|*.* "; // open.ShowDialog(); if(open.ShowDialog()==DialogResult.OK) { sr = new StreamReader(open.FileName,UTF8Encoding.UTF8); } else { MessageBox.Show("发生错误!"); return; } readpublickey = sr.ReadToEnd(); sr.Close(); } //从文件中读取私匙信息 private void button8_Click(object sender, System.EventArgs e) { open = new OpenFileDialog( ); open.Filter="Text File (*.txt)|*.txt|All File (*.*)|*.* "; open.ShowDialog(); StreamReader sr = new StreamReader(open.FileName,UTF8Encoding.UTF8); readprivatekey = sr.ReadToEnd(); sr.Close(); } } }转载地址:https://linuxstyle.blog.csdn.net/article/details/1539862 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月13日 08时59分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
leetCode2 两数相加
2019-04-30
【工具使用】使用pip与conda安装、更新与卸载Pytorch和torchvision
2019-04-30
【工具使用】Google免费云环境Colaboratory使用
2019-04-30
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算
2019-04-30
【NLP学习笔记】文本分类概述
2019-04-30
【深度学习笔记】文本分类
2019-04-30
【转载】炼丹实验室:深度学习网络调参技巧
2019-04-30
【论文阅读笔记】文本分类论文汇总
2019-04-30
【NLP学习笔记】One-hot encoding:独热编码
2019-04-30
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置
2019-04-30
【NLP学习笔记】词共现矩阵
2019-04-30
【NLP学习笔记】NLP基础知识框架图
2019-04-30
【深度学习笔记】卷积的输入输出的通道、维度或尺寸变化过程
2019-04-30
【NLP学习笔记】训练集、验证集和测试集的概念及划分
2019-04-30
【NLP学习笔记】conda换源
2019-04-30