全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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);
    }
  }
}

运行效果:

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

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

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

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

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

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

更多关于C#相关内容还可查看本站专题:《C#加密与解密算法与技巧总结》、《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

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


# C#  # RSA  # 非对称  # 加密  # 算法  # 详解c#与js的rsa加密互通  # c# rsa加密解密详解  # C#中RSA加密与解密的实例详解  # C#使用RSA加密解密文件  # 同时兼容JS和C#的RSA加密解密算法详解(对web提交的数据加密传输)  # jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】  # C#自定义RSA加密解密及RSA签名和验证类实例  # 基于私钥加密公钥解密的RSA算法C#实现方法  # c# rsa注册实现加密文字  # c# 实现RSA非对称加密算法  # 加密工具  # 加密解密  # 程序设计  # 操作技巧  # 公钥  # 相关内容  # 还可以  # 所需  # 感兴趣  # 数据结构  # 给大家  # 还可  # 更多关于  # 则为  # 所述  # 编辑器  # 面向对象  # 讲述了  # CrypeBtn 


相关文章: 如何在建站之星绑定自定义域名?  制作网页的网站有哪些,电脑上怎么做网页?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  表情包在线制作网站免费,表情包怎么弄?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何快速查询域名建站关键信息?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Android自定义控件实现温度旋转按钮效果  ,sp开头的版面叫什么?  详解jQuery停止动画——stop()方法的使用  如何在阿里云服务器自主搭建网站?  ppt制作免费网站有哪些,ppt模板免费下载网站?  家庭建站与云服务器建站,如何选择更优?  建站主机如何选?性能与价格怎样平衡?  建站之星免费模板:自助建站系统与智能响应式一键生成  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何选择适合PHP云建站的开源框架?  在线教育网站制作平台,山西立德教育官网?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站企业制作流程,用什么语言做企业网站比较好?  如何正确选择百度移动适配建站域名?  建站之星安装后如何自定义网站颜色与字体?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  c# 在ASP.NET Core中管理和取消后台任务  高防服务器租用如何选择配置与防御等级?  建站上传速度慢?如何优化加速网站加载效率?  Android自定义listview布局实现上拉加载下拉刷新功能  如何在Golang中引入测试模块_Golang测试包导入与使用实践  黑客如何通过漏洞一步步攻陷网站服务器?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  青岛网站建设如何选择本地服务器?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  电商网站制作价格怎么算,网上拍卖流程以及规则?  建站之星导航如何优化提升用户体验?  简单实现Android验证码  ,巨量百应是干嘛的?  建站之星图片链接生成指南:自助建站与智能设计教程  制作表格网站有哪些,线上表格怎么弄?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  全景视频制作网站有哪些,全景图怎么做成网页?  定制建站如何定义?其核心优势是什么?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  英语简历制作免费网站推荐,如何将简历翻译成英文?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  XML的“混合内容”是什么 怎么用DTD或XSD定义 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。