欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法示例

 更新時(shí)間:2017年08月28日 11:54:50   作者:5t4rk  
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法,結(jié)合實(shí)例形式分析了C#實(shí)現(xiàn)RSA加密的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法。分享給大家供大家參考,具體如下:

界面控件

namespace RSA算法
{
  partial class Form1
  {
    /// <summary>
    /// 必需的設(shè)計(jì)器變量。
    /// </summary>
    private System.ComponentModel.IContainer components = null;
    /// <summary>
    /// 清理所有正在使用的資源。
    /// </summary>
    /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param>
    protected override void Dispose(bool disposing)
    {
      if (disposing && (components != null))
      {
        components.Dispose();
      }
      base.Dispose(disposing);
    }
    #region Windows 窗體設(shè)計(jì)器生成的代碼
    /// <summary>
    /// 設(shè)計(jì)器支持所需的方法 - 不要
    /// 使用代碼編輯器修改此方法的內(nèi)容。
    /// </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 = "執(zhí)行加密解密";
      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非對(duì)稱加密解密";
      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)
    {
      //創(chuàng)建RSA加密算法服務(wù)提供者
      RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
      //顯示公鑰和私鑰
      PubKeyBox.Text = RSA.ToXmlString(false);
      PrvKeyBox.Text = RSA.ToXmlString(true);
      //執(zhí)行加密
      byte[] EncrypeBytes = RSA.Encrypt(Encoding.UTF8.GetBytes(StrBox.Text), true);
      EncrypeBox.Text = Encoding.UTF8.GetString(EncrypeBytes);
      //執(zhí)行解密
      byte[] DecrypeBytes = RSA.Decrypt(EncrypeBytes, true);
      Str2Box.Text = Encoding.UTF8.GetString(DecrypeBytes);
    }
  }
}

運(yùn)行效果:

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含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

更多關(guān)于C#相關(guān)內(nèi)容還可查看本站專題:《C#加密與解密算法與技巧總結(jié)》、《C#窗體操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法介紹

    C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法介紹

    這篇文章介紹了C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#實(shí)現(xiàn).net頁面之間傳值傳參方法匯總

    C#實(shí)現(xiàn).net頁面之間傳值傳參方法匯總

    這篇文章主要介紹了C#實(shí)現(xiàn).net頁面之間傳值傳參方法,實(shí)例匯總了幾類常見的傳值傳參的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#靜態(tài)方法的使用

    C#靜態(tài)方法的使用

    這篇文章介紹了C#靜態(tài)方法的使用,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Unity實(shí)現(xiàn)換裝系統(tǒng)

    Unity實(shí)現(xiàn)換裝系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)換裝系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Winform之TextBox輸入日期格式驗(yàn)證yyyy-mm-dd

    Winform之TextBox輸入日期格式驗(yàn)證yyyy-mm-dd

    Winform之TextBox輸入日期格式驗(yàn)證yyyy-mm-dd的實(shí)例與正則表達(dá)式,需要的朋友可以參考一下
    2013-02-02
  • C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法

    C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法

    某論壇的評(píng)論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來當(dāng)做 注冊(cè)模塊 的頭像綁定功能,下面通過實(shí)例代碼給大家介紹下C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法,感興趣的朋友一起看看吧
    2021-11-11
  • 一個(gè)讀寫csv文件的C#類

    一個(gè)讀寫csv文件的C#類

    這篇文章主要為大家詳細(xì)介紹了一個(gè)讀寫csv文件的C#類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片方法介紹

    C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片方法介紹

    這篇文章介紹了C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)PDF文件添加圖片背景

    C#實(shí)現(xiàn)PDF文件添加圖片背景

    這篇文章主要介紹了C#實(shí)現(xiàn)PDF文件添加圖片背景的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • C#實(shí)現(xiàn)XML文檔的增刪改查功能示例

    C#實(shí)現(xiàn)XML文檔的增刪改查功能示例

    這篇文章主要介紹了C#實(shí)現(xiàn)XML文檔的增刪改查功能,結(jié)合實(shí)例形式分析了xml文檔的創(chuàng)建及C#針對(duì)xml文檔的加載及增刪改查等操作技巧,需要的朋友可以參考下
    2017-01-01

最新評(píng)論