C#實現(xiàn)簡單的RSA非對稱加密算法示例
本文實例講述了C#實現(xiàn)簡單的RSA非對稱加密算法。分享給大家供大家參考,具體如下:
界面控件
namespace RSA算法 { partial class Form1 { /// <summary> /// 必需的設(shè)計器變量。 /// </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è)計器生成的代碼 /// <summary> /// 設(shè)計器支持所需的方法 - 不要 /// 使用代碼編輯器修改此方法的內(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非對稱加密解密"; 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); } } }
運行效果:
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è)計入門教程》
希望本文所述對大家C#程序設(shè)計有所幫助。
上一篇:C#連接到sql server2008數(shù)據(jù)庫的實例代碼
欄 目:C#教程
下一篇:C#實現(xiàn)文件上傳下載Excel文檔示例代碼
本文標(biāo)題:C#實現(xiàn)簡單的RSA非對稱加密算法示例
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5507.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10C#停止線程的方法
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新聞效果的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文