软件编程
位置:首页>> 软件编程>> C#编程>> C#实现简单的RSA非对称加密算法示例

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

作者:5t4rk  发布时间:2022-07-09 18:16:37 

标签:C#,RSA,加密

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

界面控件


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代码


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非对称加密算法示例

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

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

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

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

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

来源:http://blog.csdn.net/microzone/article/details/16904685

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com