`
leonardleonard
  • 浏览: 821735 次
社区版块
存档分类
最新评论

C#非对称加密程序

阅读更多
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();
}



}

 
分享到:
评论

相关推荐

    c# 非对称加密解密

    本篇文章将详细探讨C#中如何实现RSA非对称加密和解密,以及数字签名的相关知识。 RSA是一种基于大数因子分解困难性的公钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它包含一对密钥:公钥...

    C#-RSA非对称加密公钥加密.rar

    "C#-RSA非对称加密公钥加密.rar"压缩包提供的就是一个完整的C# RSA非对称加密实例,确保用户可以直接使用,无需额外寻找库文件或代码片段。 RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,其工作...

    RSA非对称 C#解密、js加密实现登陆密文传输

    总的来说,这个项目展示了如何利用RSA非对称加密技术,在C#和JavaScript之间实现安全的登录密码传输,保证了用户的隐私信息不被非法获取。通过理解RSA的工作原理和在C#与JavaScript中的实现方式,我们可以构建更安全...

    c# 对称加密算法 例子

    此外,为了提高安全性,可以考虑使用非对称加密算法(如RSA)来安全地交换对称密钥,然后使用对称加密算法处理大量数据。 至于提供的文件列表,`Crypto.sln` 是一个Visual Studio解决方案文件,它包含了项目的信息...

    C# 加解密 (对称,非对称,散列)

    本文将详细介绍对称加密(AES和DES)、非对称加密(RSA)以及散列函数(MD5)在C#中的应用。 1. **对称加密**: 对称加密是一种常见的加密方法,其中加密和解密使用相同的密钥。C#中,有两个主要的对称加密算法:...

    C#编写文件加密程序

    在C#编程环境中,开发一个文件加密程序是一个常见的任务,特别是在保护敏感数据和信息安全方面。本文将深入探讨如何使用C#实现文件加密,以及相关的安全概念和技术。 首先,我们需要了解加密的基本原理。加密是一种...

    C#文件夹加密程序

    RSA则是一种非对称加密算法,它使用一对密钥,一个公钥和一个私钥。公钥可以公开,用于加密数据;私钥必须保密,用于解密数据。这种方式在数据传输和认证中常见,但因为计算复杂度较高,不适用于大量数据的加密。 ...

    C#对称加密和解密记事本文件

    标题中的"C#对称加密和解密记事本文件",意味着这个程序可以用于加密和解密文本文件,特别是记事本格式的文件。这通常涉及读取文件内容,将其转换为字节数组,然后使用对称加密算法对这些字节进行处理。加密后的数据...

    C#加密程序源代码.rar

    在C#中,我们可以利用.NET框架提供的类库来实现各种加密算法,如对称加密(如AES,DES,3DES)、非对称加密(如RSA,DSA)以及哈希函数(如SHA1,MD5)等。 1. 对称加密:在对称加密中,加密和解密使用的是同一把...

    C# 文件夹加密 程序及源码 .net文件夹加密程序及源码 无BUG版本

    在加密技术上,文件夹加密通常涉及到对文件夹内的所有文件进行加密,常见的方法有对称加密(如AES,即高级加密标准)和非对称加密(如RSA)。对称加密使用同一密钥进行加密和解密,速度快,适合大量数据;非对称加密...

    C#实现3DES对称加密

    3DES(Triple Data Encryption Algorithm)是一种广泛应用的对称加密算法,它基于DES(Data Encryption Standard)并增强了安全性。本篇文章将详细探讨如何在C#环境中使用3DES进行数据加密,特别针对VS2005编译环境...

    C#开发的WinForm---SQLite加密程序

    在本文中,我们将深入探讨如何使用C#进行WinForm应用程序开发,特别关注如何构建一个SQLite加密程序。SQLite是一个轻量级、开源的关系型数据库,它被广泛用于桌面应用和嵌入式系统,因为它无需服务器进程即可运行。...

    C#最简单的加密程序

    描述中提到的“加密程序”可能是使用了其中的一种对称加密算法,比如AES,将文本数据转换为密文。基本步骤包括: 1. **密钥生成**:加密过程需要一个密钥,这个密钥是随机生成的一串字节,用于决定加密和解密的过程...

    c#字符串加密

    这个命名空间包含了多种加密算法,如对称加密(Symmetric Cryptography)、非对称加密(Asymmetric Cryptography)和哈希函数(Hash Functions)。 1. 对称加密:这是最快速且效率最高的加密方式,但需要双方共享...

    C#390-口令加密Exe源代码

    非对称加密如RSA,使用一对公钥和私钥,公钥可公开,私钥需保密。 2. **哈希加密**:哈希函数是不可逆的,可以快速验证口令输入是否正确,但不能用于长期存储,因为碰撞攻击可能导致安全风险。在C#中,`System....

    C#文件加密解密程序

    同时,对于密钥管理,非对称加密算法如RSA可以用来安全地交换对称密钥,从而提高整个系统的安全性。 总的来说,"C#文件加密解密程序"是C#编程中数据安全实践的一个实例,它利用了C#内置的加密库来确保文件的安全...

    C# RSA加密解密

    RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛应用于网络通信、数据存储等领域。C#作为.NET框架下的主要编程语言,提供了丰富的类库支持RSA加密解密操作。本篇文章将深入探讨C#如何实现RSA加密解密,...

    C#各种文件加密 按照字节加密

    为了增强安全性,可以结合使用对称加密(如AES)和非对称加密(如RSA)。 总结一下,C#提供了丰富的加密工具和技术,包括AES、RSA等,可用于对各种文件进行字节级别的加密。在编写加密程序时,应根据具体需求选择...

    C#编写的密码加密程序

    本程序是一个基于C#编写的密码加密程序,据描述可能采用了流密码(Stream Cipher)算法,这是一种常见的对称加密方式。 流密码是一种逐位加密的方式,它将明文数据流与一个伪随机密钥流进行异或操作,形成密文流。...

    c#编写的加密聊天程序

    例如,AES适用于大量数据的对称加密,RSA则用于小量数据的非对称加密,常用于密钥交换。在这个聊天程序中,可能结合了这两种加密方式,确保信息的保密性。 四、多线程处理 在C/S架构的聊天程序中,服务器端需要同时...

Global site tag (gtag.js) - Google Analytics