测试开源加解密库NETCore.Encrypt中的RSA加解密函数

  微信公众号“dotNET跨平台”的文章《开箱即用,.NET最全的加解密开源库》介绍了开源通用工具库NETCore.Encrypt,其支持对称加密算法、非对称加密算法、摘要算法等多种常用算法,使用方便,不过目前仅支持.net core。本文主要测试调用其中的RSA算法进行加解密(RSA算法的原理介绍请见参考文献4)。
  新建Winform项目,在NuGet包管理器中安装NETCore.Encrypt,如下图所示:

在这里插入图片描述
  在NETCore.Encrypt模块中,最重要的类是EncryptProvider,其支持的所有算法都以静态函数的形式定义在该类中,加密算法的话,一般都是以算法简称+Encryp/Decrypt的形式提供,如果需要密钥,EncryptProvider类中也提供有对应的密钥创建函数。
在这里插入图片描述
  EncryptProvider类中与RSA相关的的函数主要分成三类:密钥创建函数(CreateRsaKey)、加密/解密函数(RSAEncrypt/RSADecrypt)、签名/验签函数(RSASign/RSAVerify):
  密钥创建函数生成RSA算法所需的公钥、私钥、公开整数n和e,支持2048、3072、4096位数,默认为2048位。生成的密钥如下图所示。由于EncryptProvider类都是静态函数,并且RSA加解密函数的输入参数中仅包含公钥/私钥,其它密钥信息都包含在密钥创建函数的各个返回值中,并且值用base64处理。

在这里插入图片描述

  公钥:{"Modulus":"rIzt6+VMrqGnzDZYAMRTKyRSZSO/jBOfx8i+UkGcaJy9NpogEHavZfLC7z/Jkutv2SGPdrB7feBW3wYrpik03JKVlgc9KJeQH/jGOCmTerN66gxSXTkjX4SOmzXDw3FbQ0HIoR2R8HyPmatls2F99rYIxnFBnBzfUhwmSMFMDzvByzwyFam8YN92xt3vTRw+3tZ9CjM0MEzqNpU8xbDbrLm8iVwWemvCcmHEBmCOfz+eV2WavYOpwIfwS2bNqZkVkbtRfAMjY/hULwQZZzXq/wmvZ2aNCTk3meK4p9laUPcqMSJ+nyKgCTIh7BdOpbhZ+fuuMCDe8yGijIPInw/nvQ==","Exponent":"AQAB","P":null,"Q":null,"DP":null,"DQ":null,"InverseQ":null,"D":null}
  私钥:{"Modulus":"rIzt6+VMrqGnzDZYAMRTKyRSZSO/jBOfx8i+UkGcaJy9NpogEHavZfLC7z/Jkutv2SGPdrB7feBW3wYrpik03JKVlgc9KJeQH/jGOCmTerN66gxSXTkjX4SOmzXDw3FbQ0HIoR2R8HyPmatls2F99rYIxnFBnBzfUhwmSMFMDzvByzwyFam8YN92xt3vTRw+3tZ9CjM0MEzqNpU8xbDbrLm8iVwWemvCcmHEBmCOfz+eV2WavYOpwIfwS2bNqZkVkbtRfAMjY/hULwQZZzXq/wmvZ2aNCTk3meK4p9laUPcqMSJ+nyKgCTIh7BdOpbhZ+fuuMCDe8yGijIPInw/nvQ==","Exponent":"AQAB","P":"yJdfcbK4DumFFfDxr2ZXAA1Fst73EpLXfe+ZvbvExlUdlB6uKo/9N5uxJ+eMCtt95n+fZW2roLOY0JsVY88l8wJ80WFAmDqaJiw6bv5iz8WwnDme/WUihX8QUQyqeZSCbO5ROOwkq1YGtOZESG9L2fVTYBwFFsyL80aBLPbZ/ss=","Q":"3Dathvjb/F6P+hQfeWjW87sr/BFTwZwOFF8NDCy/IOsCD1SaM+l433q/vhUwQKPhf2jn0IcBunp4hy2HOegu02F1O0yXj290zzDBlA3UpdlIt6FNLvbmDKyBthQEWzC8f0T1iUnMDngLfXAr7xcpvUS10Vaz8vNg3z/+MySOGpc=","DP":"Scj8r8sIz1twu/hsPpPLjtZS/A/uHGPtZoK7L8KhCD+I6NI8SKW8hDb9/Gq85cWFU0NAs8OarTtDDADv5k3tbK1OkopOg3CTAVWljOyAFmNmqqC7bgREpYxuyRF6p8xMCZvEPscGWgwD3YkSNv7RjPQj3ieQa6mEFVGq9Io89+8=","DQ":"fTIMx552Gu1791Y3aqPjCOBRqlYDgyAAlS5Q0aoi40kYe7TCkl7a3FsB5cRQEX/aNMBkgpYusmDsYxXMOmy5Km3O426w/9gC1cRHWa/fRIbao6NtqRSvR2dPuz94FowHrmd7HJk7DMLM7Xy3TY+iqDsHD0O2vJoHagUMtPDEZXM=","InverseQ":"WDQtTLZ/9/bpZLCx477jSdcxqbMRI0pyqBXt7bd02lPCJghCpQ9Kj+Q9fmGiXJG0U3CtXrfLh09x2ngrNsCS8cCUAFiKzoOsbVcUUIbUqHRNTslyyUBkP6k2nYPy0mnlh4x0D9T1wxuVfN+o91Y9EJiX/nxXOUwlZYAtPQeOqQI=","D":"fNJiFqDErRuSGB9D4CIli/L1i+alXT6g+lRUoYqHDAI+um4aPe6tiZFoxMwfFKIuQiON9a1LWE7eaO28y7HJZLrBbUuFSYUCpK5BLkWdQ0js5LzPJFL+LM3mn47wM8Uf4PKIoUyT0yU4eFDN/ErNZZhflrY9YSJdxrdIVp9GV0mRyPHNldllSGq6lP1+pYCpXuTDV2iLctiAde4/t5Iaqyl6dkcDd+Y/9P20kcL7GMDp8gH9ZG/rXPZf81UyBA64PIX5uS7M9LtGdaeWDHNBE6Ihp+irYP3s3nWPRxlSjDVW2vqHPI31X9YFafv6tQmFend/F0EysJ1G0uODe6H7nQ=="}
  e:010001
  n:AC8CEDEBE54CAEA1A7CC365800C4532B24526523BF8C139FC7C8BE52419C689CBD369A201076AF65F2C2EF3FC992EB6FD9218F76B07B7DE056DF062BA62934DC929596073D2897901FF8C63829937AB37AEA0C525D39235F848E9B35C3C3715B4341C8A11D91F07C8F99AB65B3617DF6B608C671419C1CDF521C2648C14C0F3BC1CB3C3215A9BC60DF76C6DDEF4D1C3EDED67D0A3334304CEA36953CC5B0DBACB9BC895C167A6BC27261C406608E7F3F9E57659ABD83A9C087F04B66CDA9991591BB517C032363F8542F04196735EAFF09AF67668D09393799E2B8A7D95A50F72A31227E9F22A0093221EC174EA5B859F9FBAE3020DEF321A28C83C89F0FE7BD  

  函数调用比较简单,本文使用以下函数进行加解密(EncryptProvider类中的RSA函数有多种重载函数,支持多种明文形式),加解密的测试截图如下图所示:

public static string RSAEncrypt(string publicKey, string srcString)
public static string RSADecrypt(string privateKey, string srcString)

在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/sD7O95O/article/details/132893071
[2]https://github.com/myloveCc/NETCore.Encrypt
[3]https://www.cnblogs.com/piscesLoveCc/p/7423205.html
[4]https://baike.baidu.com/item/RSA%E7%AE%97%E6%B3%95

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python每日练习:20个常用代码,初学者也可以自己实现!

文章目录 前言20个代码1.重复元素判定2.字符元素组成判定3.内存占用4.字节占用5.打印 N 次字符串6.大写第一个字母7.分块8.压缩9.解包10.链式对比11.逗号连接12.元音统计13.首字母小写14.展开列表15.列表的差16.通过函数取差17.链式函数调用18.检查重复项19.合并两个字典20.将两…

jmeter接口自动化测试工具在企业开展实际的操作

在企业使用jmeter开展实际的接口自动化测试工具,建议按如下操作流程, 可以使整个接口测试过程更规范,更有效。 接口自动化的流程: 1、获取到接口文档:swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

推荐这款机器学习的特征筛选神器!

大家好,特征选择是机器学习建模流程中最重要的步骤之一,特征选择的好坏直接决定着模型效果的上限,好的特征组合甚至比模型算法更重要。除了模型效果外,特征选择还有以下几点好处: 提高模型性能并降低复杂性&#xff08…

不可否认程序员的护城河已经越来越浅了

文章目录 那些在冲击程序员护城河低代码/无代码开发平台自动化测试和部署工具AI辅助开发工具在线学习和教育平台 面临冲击,程序员应该怎么做深入专业知识:不断学习全栈技能开发解决问题的能力建立人际网络管理和领导技能 推荐阅读 技术和应用的不断发展对…

Springboot通过ObjectMapper(节点树)解析JSON

1、ObjectMapper通过节点树的方式解析JSON字符串 1.1、通过节点直接获取属性值 1.1.1、测试代码 node.get("order_id"):直接获取JSON中属性对应的值 Test public void parseJson() throws Exception{//创建json字符串,模拟从外界接收的订…

第二章 03Java基础-IDEA相关叙述

文章目录 前言一、IDEA概述二、IDEA下载和安装三、IDEA项目结构介绍四、IDEA的项目和模块操作总结前言 今天我们学习Java基础,IDEA下载以及相关配置和基础使用方法 一、IDEA概述 1.IDEA全称IntelliJ IDEA,是用于Java语言开发的集成工具,是业界公认的目前用于Java程序开发最…

Leetcode Hot100之六:42.接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 提示&#xff1a; n height.length 1 < n < 2 * 10^4 0 < height[i] < 10^5 思路 暴力循环&#xff1a; 原本的思路是左边界i从左到…

阿里云从公网IP转为弹性公网IP,同时绑定多个IP教程

先将云服务器ECS 转为弹性IP 购买新的弹性辅助网卡 购买弹性公网iP 购买之后选择绑定资源选择第二步购买的网卡 进入ECS 终端 ,输入 ip address可以查看到eth1 的对应mac 地址 终端输入 vi /etc/sysconfig/network-scripts/ifcfg-eth1保存一下信息 DEVICEeth1 #表示新配置…

RK3568平台 查看内存的基本命令

一.free命令 free命令显示系统使用和空闲的内存情况&#xff0c;包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略。 Mem 行(第二行)是内存的使用情况。 Swap 行(第三行)是交换空间的使用情况。 total 列显示系统总的可用物理内存和交换空间大小。 used 列显…

《Redis实战》笔记

文章目录 1.字符串命令2.列表命令3.集合命令4.散列命令5.有序集合命令6.发布订阅命令7.其他命令8.redis事务9.键的过期时间10.redis的持久化 1.字符串命令 2.列表命令 3.集合命令 4.散列命令 5.有序集合命令 6.发布订阅命令 7.其他命令 8.redis事务 5个命令&#xff1a;WATCH …

Spring IoC注解式开发

2023.11.11 注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 负责声明Bean的注解&#xff0c;常见的包括四个&#xff1a; ComponentControllerServiceRepository 通过源码可以发现&#xff0c;Controller、Service、Repository这三个注解都是Component注解的别名…

开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对这篇博客也感兴趣o (ˉ▽ˉ&#xff1b;) 震惊&#xff01;测试人员对BUG的全方位解析&#xff0c;测试的执行和BUG管理&#xff01; 原来测试人员遇到BUG是这样返回给开发的&#xff01;什么是BUG&am…

文件管理技巧:按文件容量大小分类,自动移动至目标文件夹的方法

按文件容量大小分类可以帮助快速识别和筛选出不同大小的文件。这样做有很多好处。首先&#xff0c;可以轻松地查找和访问特定大小的文件&#xff0c;提高工作效率。其次&#xff0c;通过将不同大小的文件分类&#xff0c;可以更好地了解和掌控文件的使用情况&#xff0c;避免存…

从windows iso文件中提取install.wim

1、首先从微软官方下载需要的windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10/ 2、在下载的iso文件右键&#xff0c;打开压缩包&#xff0c;在sources文件夹下&#xff0c;应该就可以看到install.wim了。但似乎在最新的win10版本&#xff0c;微软采…

redis: 记录一次线上redis内存占用过大问题解决过程

引言 记录一次线上redis占用过大的排查过程&#xff0c;供后续参考 问题背景 测试同事突然反馈测试环境的web系统无法登陆&#xff0c;同时发现其他子系统也存在各类使用问题 排查过程 1、因为首先反馈的是测试环境系统无法登陆&#xff0c;于是首先去查看了登陆功能的报错…

jupyter notebook添加markdown目录

jupyternotebook添加markdown目录 1. 安装python包2. 安装JavaScript和CSS文件3. 启用扩展4. 设置markdown选项 1. 安装python包 官方安装 使用pip pip install jupyter_contrib_nbextensions # 或者 pip install https://github.com/ipython-contrib/jupyter_contrib_nbext…

【Spring】SpringBoot日志

SpringBoot日志 日志概述日志使用打印日志获取日志对象使用日志对象打印日志日志框架介绍门面模式SLF4J框架介绍(simple logging facade for java) 日志格式说明日志级别日志级别的分类日志级别的使用 日志配置配置日志级别日志持久化配置日志文件的路径和文件名配置日志文件的…

若依如何进行页面路由跳转,路由跳转时如何携带参数(超详细图文教程)

我们经常会有这样需求&#xff0c;当我们在一个页面时&#xff0c;想要跳转到另一个页面&#xff0c;但是跳转的同时还需要携带参数。那么这种情况在若依系统中该如何做呢&#xff0c;下面我们来说一下。 文章目录 问题提出&#xff1a;一、创建目标页面的路由(也就是图2的路由…

到底是什么是Python?语言的核心是什么?

文章目录 前言一、为什么提出python编程的核心是什么&#xff1f;二、Python需要REPL&#xff1f;三、Python的哪些部分需要被视为“Python”&#xff1f;四、需要多少兼容性才能有用&#xff1f;Python技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学…

msvcp140.dll丢失的解决方法win7系统,全面详细解析

在Windows 7系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序和系统的正常运行。然而&#xff0c;由于各种原因&#xff0c;msvcp140.dll文件可能会丢失或损坏&#xff0c;导致系统出现错误提示、程序无法启动等问题。本文将详细介…