首页 > 编程语言 >C# RSA加密-RSACryptoServiceProvider

C# RSA加密-RSACryptoServiceProvider

时间:2024-01-23 11:14:35浏览次数:27  
标签:公钥 加密 string C# RSA RSACryptoServiceProvider provider

1.获取公钥和私钥(XML格式)

        /// <summary>
        /// 获取RSA 密钥
        /// 下标 0 为 私钥
        /// 下标 1 为 公钥
        /// </summary>
        /// <returns></returns>
        public static string[] GetRSAKey()
        {
            RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
            string privatekey = provider.ToXmlString(true);
            string publickey = provider.ToXmlString(false);
            return new string[] { privatekey, publickey };
        }

2.公钥加密

 /// <summary>
 /// RSA 加密
 /// </summary>
 /// <param name="plainText">加密内容</param>
 /// <returns></returns>
 public string RSAEncrypt(string plainText)
 {
     byte[] buffer = Encoding.UTF8.GetBytes(plainText);
     RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
     provider.FromXmlString(PublicKeyRsa);
     byte[] output = provider.Encrypt(buffer, false);
     return Convert.ToBase64String(output);
 }

3.私钥解密

 /// <summary>
 /// RSA 解密
 /// </summary>
 /// <param name="encryptedText"></param>
 /// <returns></returns>
 public string RSADecrypt(string encryptedText)
 {
     byte[] buffer = Convert.FromBase64String(encryptedText);
     RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
     provider.FromXmlString(PrivateKeyRsa);
     byte[] output = provider.Decrypt(buffer, false);
     return Encoding.UTF8.GetString(output);
 }

 

4.前端使用后端的公钥加密

前端使用jsencrypt库来进行RSA加密,jsencrypt库支持的密钥是Pkcs8格式,后端需要将公钥格式XML转为Pkcs8格式

后端需安装NuGet包XC.RSAUtil 进行数据格式转换

  //私钥XML格式转Pkcs8格式
  RsaKeyConvert.PrivateKeyXmlToPkcs8(PrivateKeyRsa);
  //公钥XML格式转Pkcs8格式
  RsaKeyConvert.PublicKeyXmlToPem(PublicKeyRsa);

前端加密

   /**
   * 信息加密
   * @param key 公钥(后端获取)
   * @param str 加密数据
   * @returns
   */
  encryptInfo(key, str) {
    let encrypt = new JSEncrypt({});
    encrypt.setPublicKey(key);
    return encrypt.encrypt(str);
  }

 

标签:公钥,加密,string,C#,RSA,RSACryptoServiceProvider,provider
From: https://www.cnblogs.com/sugarwxx/p/17981898

相关文章

  • CF-91-B-单调栈+二分
    91-B题目大意给定一个长为\(n\)的序列\(a\),对于每个\(a[i]\),你需要找到一个\(j\)满足\(a[i]>a[j]\)且\(j-i\)最大。Solution逆序遍历,维护一个单调递减的栈,如果当前枚举的\(a[i]\)小于栈顶元素,则入栈。如果\(a[i]\)大于栈顶元素,那么后面的元素如果大于\(a[i]\),那么也大于栈顶......
  • 解析Java Chassis 3中应用视角的配置管理
    本文分享自华为云社区《JavaChassis3技术解密:应用视角的配置管理》,作者:liubao68。谈论微服务配置管理的时候,最多的是以配置中心为视角,讨论其配置管理能力。和注册中心一样,不同的配置中心会有一些关键的设计指标。配置的格式和类型。支持不同格式和类型的配置项,比如YAML、文......
  • 历史SQL性能监控导致数据库出现大量latch free
    数据库版本:19.10RAC操作系统:redhat7.6最近收到数据库大量latchfree告警,结合最近后台同步数据以及地市访问较为频繁,起初认为是正常现象,可后来告警实在是频繁,登录数据库分析了下大概情况通过latchfree:P2值查看具体的latch名称--这里看到是real-timedescriptorlatch,之前没......
  • 华企盾DSC日志审计在企业防泄密中有什么作用呢?
    在当今信息化时代,数据安全成为了企业的核心竞争力之一。一旦核心数据泄露,企业将面临巨大的经济损失甚至无法挽回的后果。因此,保护企业的数据安全成为了首要任务。在众多数据安全措施中,日志审计成为了企业防范数据泄露的重要手段。那么,日志审计在企业防泄密中有什么作用呢?日志审......
  • css变量基本操作
    1.html中css变量写法<divstyle="--color:#ccc;"><spanstyle="border:1pxsolidvar(--color);"></div><ul><listyle="--i:1"></li><listyle="--i:2"></li>......
  • no such file or directory .next/BUILD_ID
    报错内容%npmstart>pt-react@0.1.0start>nextstart▲Next.js14.1.0-Local:http://localhost:3000Error:ENOENT:nosuchfileordirectory,open'/Users/alan/github/pt-react/.next/BUILD_ID'atasyncopen(node:inter......
  • Linux-crontab的使用
    一、什么是crontab?crontab是有cron(crond)这个系统服务来控制的,cron服务是linux的内置服务,类似于window下的计划任务,但它不会开机自动启动二、如何使用?crontab-l   //查看当前用户的crontabcrontab-e   //编辑crontabcrontab-r   //删除某个用户的cron服......
  • shardingsphere springboot application.yml配置
    shardingsphere springbootapplication.yml配置 spring:sharding-sphere:datasource:names:mastermaster:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql:......
  • c#dataGridView控件水平滚动条不显示的原因
    https://blog.csdn.net/weixin_44899642/article/details/128791899c#dataGridView控件水平滚动条不显示的原因1.最主要的在dataGridView控件属性中的ScrollBars是否设为BothBoth代表水平和垂直方向根据实际需求自动显示滚动条None代表水平和垂直都不显示滚动条Vertical代表......
  • error Error: certificate has expired
    报错内容%yarninstallyarninstallv1.22.21infoNolockfilefound.(node:11844)[DEP0040]DeprecationWarning:The`punycode`moduleisdeprecated.Pleaseuseauserlandalternativeinstead.(Use`node--trace-deprecation...`toshowwherethewarningw......