服务器之家

服务器之家 > 正文

C#实现简单的RSA非对称加密算法示例

时间:2022-01-20 14:16     来源/作者:5t4rk

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

界面控件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
namespace RSA算法
{
  partial class Form1
  {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.IContainer components = null;
    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
    protected override void Dispose(bool disposing)
    {
      if (disposing && (components != null))
      {
        components.Dispose();
      }
      base.Dispose(disposing);
    }
    #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要
    /// 使用代码编辑器修改此方法的内容。
    /// </summary>
    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代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
    }
  }
}

运行效果:

C#实现简单的RSA非对称加密算法示例

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

原文链接:http://blog.csdn.net/microzone/article/details/16904685

标签:

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部