C# RSA加密和解密,RSA生成私钥和公钥

C# RSA加密和解密,RSA生成私钥和公钥(使用XML格式秘钥)-开发框架文库

C# RSA加密和解密,RSA生成私钥和公钥(使用XML格式秘钥)

目录

  • 前言
  • 生成xml格式的公钥和私钥
    • PrivateKey
    • PublicKey
  • 测试加密、解密
    • 方案1:RSA公钥加密,RSA私钥解密
    • 方案2:RSA私钥加密,RSA私钥解密
  • 数字签名、验签
  • RsaHelper类

前言

网上有大量RSA加密解密解决方案,包括开源Nuget包和源码,作者测试过多种方案,最后选择本文介绍的方案,简单,代码少,效率高!RsaHelper 类能够生成公钥和私钥,不需要在网上在线生成公钥和私钥啦!优秀方案,推荐给大家!

生成xml格式的公钥和私钥

 RsaHelper.GetXmlKey(out var privatekey1, out var publickey1);

PrivateKey

<RSAKeyValue><Modulus>0nMMhiGAklb2URWmQsxABYYdrVqyiXfd9kfEVgBsdb39kAw6ivdvOs4ahYWbutcQRq37qRqlRHHAguDxcTWmxpWsFmd9c5DIwvOyXrmynSgGdEVzu5NrCfZlLI7WwvFSQxF/3smdgXQxXYcYwdItV8dXd3CxBaqWS92OzMLkIr0=</Modulus><Exponent>AQAB</Exponent><P>60q62GF9otYbzo6o7Ux1ITNzdxzahBxw6uZ6f1ph+nu+dq/90DQlwxXHKA0T9Y2acw3NjQKg6QNdDvfbjO0Euw==</P><Q>5PiaMXTNBpCO0Yr7T6Cvp7eRMzg79IoVw88bl0dvZ3jNYPOzHMBeOA7E7kWExFNBXlxKN6J0Pon5FVnb2++65w==</Q><DP>1S0axgrmGk9kWCvWj1DTWmZUOdnxfPqLr7drytCnrprIwJ3JFwb4I50qmHXo3HQUOCOMVTLJePPsLzCPQUpJGw==</DP><DQ>lcjrVZ8K4FiAlSNN83Eyd4zmN5N55SbPxiAd9ICOqCmmcN37NbvB5voCabygda3g/VFyW6KyWJb5krYN1Xql0Q==</DQ><InverseQ>M2ggLAOBDR3WxHNI5pZeQIEk13oEQAUMLJCS7ahiFSEowleDhf7DvZVEUXwS9L2abvxunhnLkT8tyn/svy+V9w==</InverseQ><D>iejQ5TkhK0UHp307dfypW7VWz1pnM0S01QaUuBMRAFufxXzuBFE/t9aGdMdolRkIVnj/OQL4GJE+qcXFEv4oqjv/eO/pchmnI+/sXxESyt3wecO6YlHXQ3x/qWhesYnUzRSCoB9BMtHXv4xan2WIAZfYlWCGdnc4MObSC6LywlU=</D></RSAKeyValue>

PublicKey

<RSAKeyValue><Modulus>0nMMhiGAklb2URWmQsxABYYdrVqyiXfd9kfEVgBsdb39kAw6ivdvOs4ahYWbutcQRq37qRqlRHHAguDxcTWmxpWsFmd9c5DIwvOyXrmynSgGdEVzu5NrCfZlLI7WwvFSQxF/3smdgXQxXYcYwdItV8dXd3CxBaqWS92OzMLkIr0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

测试加密、解密

方案1:RSA公钥加密,RSA私钥解密

C#

//方案1:RSA公钥加密
var data = RsaHelper.Encrypt("www.cscode.net|C/S框架网", publickey1);
Console.WriteLine(data);//方案1:RSA私钥解密
var value = RsaHelper.Decrypt(data, privatekey1);
Console.WriteLine(value);

方案2:RSA私钥加密,RSA私钥解密

C#

 //方案2:RSA私钥加密var data1 = RsaHelper.Encrypt("www.cscode.net|C/S框架网", privatekey1);//方案2:RSA私钥解密var value1 = RsaHelper.Decrypt(data, privatekey1);

数字签名、验签

前端使用公钥进行数字签名,后台使用私钥验签。

C#

//数字签名、验签
var signData = RsaHelper.Sign("www.cscode.net|C/S框架网", publickey1);
var isEqual = RsaHelper.VerifySign("www.cscode.net|C/S框架网", signData, privatekey1);
Console.WriteLine(isEqual);

RsaHelper类

RSA算法加密解密(使用XML格式秘钥)

C#

  /// <summary>/// RSA算法加密解密(使用XML格式秘钥)/// </summary>public static class RsaHelper{/// <summary>/// 获取RSA 密钥    /// </summary>/// <param name="privatekey">私钥</param>/// <param name="publickey">公钥</param>public static void GetXmlKey(out string privatekey, out string publickey){RSACryptoServiceProvider provider = new RSACryptoServiceProvider();privatekey = provider.ToXmlString(true);publickey = provider.ToXmlString(false);}/// <summary>/// RSA 使用公钥加密/// </summary>/// <param name="plainText">明文</param>/// <param name="publicKey">公钥</param>/// <returns></returns>public static string Encrypt(string plainText, string publicKey){byte[] buffer = Encoding.UTF8.GetBytes(plainText);RSACryptoServiceProvider provider = new RSACryptoServiceProvider();provider.FromXmlString(publicKey);byte[] output = provider.Encrypt(buffer, false);return Convert.ToBase64String(output);}/// <summary>///  RSA 使用私钥解密/// </summary>/// <param name="encryptedText">明文</param>/// <param name="privateKey">私钥</param>/// <returns></returns>public static string Decrypt(string encryptedText, string privateKey){byte[] buffer = Convert.FromBase64String(encryptedText);RSACryptoServiceProvider provider = new RSACryptoServiceProvider();provider.FromXmlString(privateKey);byte[] output = provider.Decrypt(buffer, false);return Encoding.UTF8.GetString(output);}/// <summary>/// 使用公钥数字签名/// </summary>/// <param name="data">加密的数据</param>/// <param name="publicKey">公钥</param>/// <returns></returns>public static string Sign(string data, string publicKey){return Encrypt(data, publicKey);}/// <summary>/// 使用私钥验签/// </summary>/// <param name="original">原文</param>/// <param name="encryptedText">数字签名的数据</param>/// <param name="privateKey">私钥</param>/// <returns></returns>public static bool VerifySign(string original, string encryptedText, string privateKey){return Decrypt(encryptedText, privateKey).CompareTo(original) == 0;}}

专注.NET技术、C/S架构开发框架软件

C/S框架网 - 开发框架文库

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35519.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

指标加权评价方法

文章目录 层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09;熵权法原理计算方法 Technique for Order Preference by Similarity to Ideal Solution(TOPSIS, 优劣解距离法)原理计算方法 层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09; …

React第十七章(useRef)

useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时&#xff0c;便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value&#xff0c;其次就是vu…

SpringBoot 赋能家乡特色推荐系统:高效架构与前沿技术集成

1 绪 论 1.1课题背景与意义 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管…

国际知名会计事务所安永造访图为科技,探索财务管理全球化新路径

今日&#xff0c;全球领先的安永会计师事务所&#xff08;以下简称“安永”&#xff09;合伙人造访了图为信息科技&#xff08;深圳&#xff09;有限公司&#xff08;以下简称“图为科技”&#xff09;。 安永就财务管理工作的全球化战略提供专业指导意见&#xff0c;并为双方…

Java 实现手机号码归属地查询

1.pom坐标 <dependency><groupId>com.googlecode.libphonenumber</groupId><artifactId>geocoder</artifactId><version>2.205</version></dependency> 2.代码 package test;import com.alibaba.excel.util.StringUtils; im…

SIP系列七:ICE框架(P2P通话)

我的音视频/流媒体开源项目(github) SIP系列目录 目录 一、NAT 1、NAT介绍 2、NAT类型 2.1、 完全圆锥型NAT 2.2、受限圆锥型NAT 2.3、端口受限圆锥型NAT 2.4、对称NAT 3、NAT打洞 3.1、不同一NAT下 3.2、同一NAT下 二、ICE 三、ICE中的SDP 至此&#x…

python桌面工具

用处 使用该工具可以将excel内容转成SQL语句&#xff0c;可以使用到一些SQL的报表平台可以将json文件转成xlsx格式文件 前期准备 安装库 pip install pandas -i https://mirrors.aliyun.com/pypi/simplepip install wxpython -i https://mirrors.aliyun.com/pypi/simplepip i…

【Golang】Go语言编程思想(一):接口

接口 接口的概念 现在我们要实现一个函数&#xff0c;用于对给定的 url 进行解析&#xff0c;具体的代码实现如下&#xff1a; package mainimport ("fmt""io""net/http" )func retrieve(url string) string {resp, err : http.Get(url)if er…

SAP SD 如何设置交货单数量可修改为0

在日常运维中&#xff0c;销售订单可以被reject&#xff0c;但是交货单只能被物理删除 但是粗暴的物理删除&#xff0c;又会使得单据不连续&#xff0c;出现问题不好追溯 所以我们就可以通过将废弃的交货单的数量置为0 配置如下&#xff1a; C表示&#xff0c;创建的时候不可…

记一次由docker容器使得服务器cpu占满密码和密钥无法访问bug

Bug场景&#xff1a; 前几天在服务器上部署了一个免费影视网站&#xff0c;这个应用需要四个容器&#xff0c;同时之前的建站软件workpress也是使用docker部署的&#xff0c;也使用了三个容器。在使用workpress之前&#xff0c;我将影视软件的容器全部停止。 再使用workpress…

Matlab R2024b 中文版 下载及安装教程

点击下方链接下载安装包 Matlab R2024b 中文版安装包点击下载https://mp.weixin.qq.com/s/Kq2j1dQLdULOVV9vrA6pkA 安装教程 1.通过上方链接下载软件&#xff0c;鼠标右键【MATLAB R2024b(64bit)】压缩包&#xff0c;选择解压到MATLAB R2024b(64bit)。 2.双击进入解压后的文…

2024年12月6日Github流行趋势

项目名称&#xff1a;lobe-chat 项目维护者&#xff1a;arvinxx, semantic-release-bot, canisminor1990, lobehubbot, renovate项目介绍&#xff1a;一个开源的现代化设计的人工智能聊天框架。支持多AI供应商&#xff08;OpenAI / Claude 3 / Gemini / Ollama / Qwen / DeepSe…

韩企研学团造访图为科技:共探人工智能创新前沿

今日&#xff0c;一支由韩国知名企业研学专家组成的代表团莅临图为科技深圳总部&#xff0c;展开了一场深度技术交流与研讨活动。 此次访问旨在通过实地探访中国领先的科技企业&#xff0c;促进中韩两国在科技创新领域的深入合作与交流。 韩国游学团合影 图为科技作为一家在人…

Vulnhub---kioptirx4 udf手工提权

个人博客 WuTongSec 打点 nmap -sP 192.168.128.0/24 找机器 nmap -P- 192.168.128.135 端口快扫 nmap -min-rate 10000 -sV -sC -O 192.168.128.135 脚本并没有扫出 什么洞 dirsearch -u http://192.168.128.135 目录扫描 三个200 那就先上web看看 web是应该登录框 在pas…

基于RISC-V的HSM方案

安全之安全(security)博客目录导读 本篇博客&#xff0c;我们聚焦RISC-V 2024中国峰会上RISC-V的一个HSM&#xff08;Hardware Security Module&#xff09;实现方案&#xff0c;来自芯来科技王松老师。 关于RISC-V TEE(可信执行环境)的相关方案&#xff0c;如感兴趣可参考RIS…

【C++探索学习】第十九弹——进程替换:深入解析操作系统中的进程替换机制

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在Linux操作系统中&#xff0c;进程替换&#xff08;Process Replacement&#xff09;是一个重要的概念&#xff0c;它允许程序通过系统调…

[软件工程]八.软件演化

8.1什么是软件演化 由于种种不可避免的原因&#xff0c;系统开发完成后的软件需要进行修改来适应变更的需求&#xff0c;我们对软件的修改就叫软件演化。 8.2为什么软件会演化 由于业务的变更或者为了满足用户期待的改变&#xff0c;使得对已有的系统的新需求浮现出来。由于…

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时&#xff0c;会发现网络连接受限&#xff0c;或无法正常访问互联网。这种情况不仅影响了工作效率&#xff0c;还可能错过重要的信息。那么&#xff0c;究竟是什么原因导致了电脑WiFi连接受限呢&#xff1f;又该如何解决这一问题呢&#xff1f;小A今天就来教…

【Liunx篇】基础开发工具 - yum

文章目录 &#x1f335;一.Liunx下安装软件的方案&#x1f43e;1.源代码安装&#x1f43e;2.rpm包安装&#x1f43e;3.包管理器进行安装 &#x1f335;二.软件包管理器-yum&#x1f335;三.yum的具体操作&#x1f43e;1.查看软件包&#x1f43e;2.安装软件包&#x1f43e;3.卸载…

第七节(2)、T型加减速优化处理【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍解决标准T型加减速过程中的两个缺陷&#xff0c;其一是使得初速度任意设置&#xff1b;其二是降低Cn递推计算量&#xff0c;提升速度上限 一. 加速减速过程计算 1.1计算不存在匀速过程 根据基本运动定理&#xff1a; w m a x w 0 a 0 ∗ t n 0 … …