rsa算法 c#语言,C#实现简单的RSA非对称加密算法示例

本文实例讲述了C#实现简单的RSA非对称加密算法。分享给大家供大家参考,具体如下:

界面控件

namespace RSA算法

{

partial class Form1

{

///

/// 必需的设计器变量。

///

private System.ComponentModel.IContainer components = null;

///

/// 清理所有正在使用的资源。

///

/// 如果应释放托管资源,为 true;否则为 false。

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows 窗体设计器生成的代码

///

/// 设计器支持所需的方法 - 不要

/// 使用代码编辑器修改此方法的内容。

///

private void InitializeComponent()

{

this.StrBox = new System.Windows.Forms.TextBox();

this.label1 = new System.Windows.Forms.Label();

this.PubKeyBox = new System.Windows.Forms.TextBox();

this.label2 = new System.Windows.Forms.Label();

this.PrvKeyBox = new System.Windows.Forms.TextBox();

this.label3 = new System.Windows.Forms.Label();

this.EncrypeBox = new System.Windows.Forms.TextBox();

this.label4 = new System.Windows.Forms.Label();

this.label5 = new System.Windows.Forms.Label();

this.Str2Box = new System.Windows.Forms.TextBox();

this.CrypeBtn = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// StrBox

//

this.StrBox.Location = new System.Drawing.Point(115, 12);

this.StrBox.Name = "StrBox";

this.StrBox.Size = new System.Drawing.Size(258, 21);

this.StrBox.TabIndex = 0;

//

// label1

//

this.label1.AutoSize = true;

this.label1.Location = new System.Drawing.Point(11, 18);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(77, 12);

this.label1.TabIndex = 1;

this.label1.Text = "加密前的明文";

//

// PubKeyBox

//

this.PubKeyBox.Location = new System.Drawing.Point(115, 78);

this.PubKeyBox.Multiline = true;

this.PubKeyBox.Name = "PubKeyBox";

this.PubKeyBox.Size = new System.Drawing.Size(258, 74);

this.PubKeyBox.TabIndex = 2;

//

// label2

//

this.label2.AutoSize = true;

this.label2.Location = new System.Drawing.Point(11, 87);

this.label2.Name = "label2";

this.label2.Size = new System.Drawing.Size(29, 12);

this.label2.TabIndex = 3;

this.label2.Text = "公钥";

//

// PrvKeyBox

//

this.PrvKeyBox.Location = new System.Drawing.Point(115, 158);

this.PrvKeyBox.Multiline = true;

this.PrvKeyBox.Name = "PrvKeyBox";

this.PrvKeyBox.Size = new System.Drawing.Size(258, 128);

this.PrvKeyBox.TabIndex = 4;

//

// label3

//

this.label3.AutoSize = true;

this.label3.Location = new System.Drawing.Point(13, 167);

this.label3.Name = "label3";

this.label3.Size = new System.Drawing.Size(101, 12);

this.label3.TabIndex = 5;

this.label3.Text = "密钥(包含私钥)";

//

// EncrypeBox

//

this.EncrypeBox.Location = new System.Drawing.Point(115, 292);

this.EncrypeBox.Name = "EncrypeBox";

this.EncrypeBox.Size = new System.Drawing.Size(258, 21);

this.EncrypeBox.TabIndex = 6;

//

// label4

//

this.label4.AutoSize = true;

this.label4.Location = new System.Drawing.Point(14, 299);

this.label4.Name = "label4";

this.label4.Size = new System.Drawing.Size(29, 12);

this.label4.TabIndex = 7;

this.label4.Text = "密文";

//

// label5

//

this.label5.AutoSize = true;

this.label5.Location = new System.Drawing.Point(14, 329);

this.label5.Name = "label5";

this.label5.Size = new System.Drawing.Size(77, 12);

this.label5.TabIndex = 8;

this.label5.Text = "解密后的明文";

//

// Str2Box

//

this.Str2Box.Location = new System.Drawing.Point(115, 320);

this.Str2Box.Name = "Str2Box";

this.Str2Box.Size = new System.Drawing.Size(258, 21);

this.Str2Box.TabIndex = 9;

//

// CrypeBtn

//

this.CrypeBtn.Location = new System.Drawing.Point(117, 43);

this.CrypeBtn.Name = "CrypeBtn";

this.CrypeBtn.Size = new System.Drawing.Size(104, 23);

this.CrypeBtn.TabIndex = 10;

this.CrypeBtn.Text = "执行加密解密";

this.CrypeBtn.UseVisualStyleBackColor = true;

this.CrypeBtn.Click += new System.EventHandler(this.CrypeBtn_Click);

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(385, 353);

this.Controls.Add(this.CrypeBtn);

this.Controls.Add(this.Str2Box);

this.Controls.Add(this.label5);

this.Controls.Add(this.label4);

this.Controls.Add(this.EncrypeBox);

this.Controls.Add(this.label3);

this.Controls.Add(this.PrvKeyBox);

this.Controls.Add(this.label2);

this.Controls.Add(this.PubKeyBox);

this.Controls.Add(this.label1);

this.Controls.Add(this.StrBox);

this.Name = "Form1";

this.Text = "RSA非对称加密解密";

this.ResumeLayout(false);

this.PerformLayout();

}

#endregion

private System.Windows.Forms.TextBox StrBox;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.TextBox PubKeyBox;

private System.Windows.Forms.Label label2;

private System.Windows.Forms.TextBox PrvKeyBox;

private System.Windows.Forms.Label label3;

private System.Windows.Forms.TextBox EncrypeBox;

private System.Windows.Forms.Label label4;

private System.Windows.Forms.Label label5;

private System.Windows.Forms.TextBox Str2Box;

private System.Windows.Forms.Button CrypeBtn;

}

}

RSA代码

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Security.Cryptography;

namespace RSA算法

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void CrypeBtn_Click(object sender, EventArgs e)

{

//创建RSA加密算法服务提供者

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

//显示公钥和私钥

PubKeyBox.Text = RSA.ToXmlString(false);

PrvKeyBox.Text = RSA.ToXmlString(true);

//执行加密

byte[] EncrypeBytes = RSA.Encrypt(Encoding.UTF8.GetBytes(StrBox.Text), true);

EncrypeBox.Text = Encoding.UTF8.GetString(EncrypeBytes);

//执行解密

byte[] DecrypeBytes = RSA.Decrypt(EncrypeBytes, true);

Str2Box.Text = Encoding.UTF8.GetString(DecrypeBytes);

}

}

}

运行效果:

7754b27208b061fcb122817b15a363e3.png

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:http://tools.jb51.net/password/hash_md5_sha

希望本文所述对大家C#程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值