这篇文章向您展示了如何在c#.net Windows窗体应用程序中使用RSA算法对字符串进行加密和解密。
RSA是由Ron Rivest,Adi Shamir和Leonard Adleman开发的非对称编码系统(其名称也是这三位作者的缩写)。它被广泛用于加密和电子签名技术。它通过使用公共密钥与所有人共享来工作。

RSA操作基于四个主要步骤:密钥生成,密钥共享,加密和解密。

本文将介绍有关c#rsa生成公共和私有密钥的算法,密钥如何在c#中进行加密和解密。

拖动 文本框,标签和按钮从Visual Studio工具箱到您的WinForm设计,那么你可以设计一个简单的用户界面,使您可以加密和使用C#代码RSA算法解密字符串,如下图所示。

在C#中使用RSA算法进行加密和解密
通过本c#密码学教程,我将创建一个Encrypt方法来使用RSA算法加密您的数据。

byte[] Encrypt(byte[] data, RSAParameters RSAKey, bool fOAEP)
{
byte[] encryptedData;
using (RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider())
{
rSACryptoServiceProvider.ImportParameters(RSAKey);
encryptedData = rSACryptoServiceProvider.Encrypt(data, fOAEP);
}
return encryptedData;
}

同样,创建  Decrypt方法以使用RSA算法解密数据。

byte[] Decrypt(byte[] data, RSAParameters RSAKey, bool fOAEP)
{
byte[] decryptedData;
using (RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider())
{
rSACryptoServiceProvider.ImportParameters(RSAKey);
decryptedData = rSACryptoServiceProvider.Decrypt(data, fOAEP);
}
return decryptedData;
}

C#RSA用公钥加密
接下来,声明 unicodeEncoding, rSACryptoServiceProvider, data 和 cryptoData变量,如下所示。

UnicodeEncoding unicodeEncoding = new UnicodeEncoding();
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
byte[] data;
byte[] encryptData;

最后,使用RSA通过调用ExportParameters方法来生成公钥和私钥  。

rSACryptoServiceProvider.ExportParameters(false)

RSA算法使用密钥在c#中执行加密和解密。

将单击事件处理程序添加到“  加密”按钮后,即可使用RSA算法对数据进行加密

private void btnEncrypt_Click(object sender, EventArgs e)
{
data = unicodeEncoding.GetBytes(txtInput.Text);
encryptData = Encrypt(data, rSACryptoServiceProvider.ExportParameters(false), false);
txtEncrypt.Text = unicodeEncoding.GetString(encryptData);
}

将单击事件处理程序添加到“ 解密” 按钮,使您可以解密数据。

private void btnDecrypt_Click(object sender, EventArgs e)
{
byte[] data = Decrypt(encryptData, rSACryptoServiceProvider.ExportParameters(true), false);
txtDecrypt.Text = unicodeEncoding.GetString(data);
}

最新文章

  1. pixi.js webgl库
  2. php分页类
  3. Mysql大范围分页优化案例
  4. 孙鑫MFC学习笔记6:菜单编程
  5. 用arp-scan扫描局域网IP地址
  6. wap网站safari浏览器和微信cooke不能登录问题
  7. 【bzoj2819】 Nim
  8. 利用SOLR搭建企业搜索平台 之——Solr索引基本操作
  9. PHP设计模式浅析
  10. SVN查看提交日志的命令
  11. hadoop+spark+mongodb+mysql+c#
  12. ASP.NET - (Session)后台登陆时,判断是不是已经登陆,如果不是,跳转回登陆页
  13. JDK自带的监控分析工具JConsole
  14. mac上搭建python+selenium2的环境
  15. Linux监控体系
  16. arm swi 软中断 一例
  17. Lending Club贷款数据分析
  18. Cocos动作执行时,同时执行完毕再进行下一步的方式
  19. Quartus prime16.0 组合逻辑always块中敏感向量表不全
  20. nginx http转 https

热门文章

  1. SpringBoot - Bean validation 参数校验
  2. MapReduce框架-Join的使用
  3. kcptun安装
  4. 【原创】一文彻底搞懂安卓WebView白名单校验
  5. redis如何实现分布式锁?
  6. jpa 指定字段内容按照顺序排序(orderBy when then)
  7. 编写一个简单的COM组件
  8. COM笔记-引用计数
  9. C# 中的反射机制
  10. Mooc中国大学Python学习笔记--数字类型及操作