这两天主要是公司同事用到了RSA加密,事后也看了下,以为很简单,最终利用RSACryptoServiceProvider来实现RSA加密,然后大致了解到RSACryptoServiceProvider不支持跨平台,此类原先存在于.NET Framework中,本文我讲讲利用RSA.Create来实现各种RSA中加密模式统一封装。


主要是在查找资料时看到了dudu老大写的有关RSA加密的文章,刚好找到了我们项目中需要用到的openssl加密模式对应.NET Core中的Pkcs1,这里实现代码实在有点多,然后自己也遇到如评论中所说加密长度超出的情况,这个时候只能采取分段加密的方式。接下来我们来看看。首先看看如下代码

ASP.NET Core实现RSA分段加密_java

ASP.NET Core实现RSA分段加密_java_02


经到github上查找解决方案,我们需要手动设置值,如下:

ASP.NET Core实现RSA分段加密_java_03

ASP.NET Core实现RSA分段加密_java_04


其中经过很多尝试,要么是Base64格式不正确,要么是待解密的数据长度和Key Size无效,我第一次尝试是返回的加密字符串,然后进行解密,就是有问题。


最后还是返回字节数组来进行加密和解密,直接看代码,这里解决了加密数据长度超出问题以及各种加密模式的统一,如下统一封装的RSAHelper类。

ASP.NET Core实现RSA分段加密_java_05

ASP.NET Core实现RSA分段加密_java_06

ASP.NET Core实现RSA分段加密_java_07

ASP.NET Core实现RSA分段加密_java_08

ASP.NET Core实现RSA分段加密_java_09

ASP.NET Core实现RSA分段加密_java_10

我们开始进行如下测试,加密数据长度为6890,如下。

ASP.NET Core实现RSA分段加密_java_11

ASP.NET Core实现RSA分段加密_java_12


我录制的ASP.NET Core MVC基础进阶课程已上线,专注于基础细节和基本原理讲解,41枚视频,仅需30元,郑重承诺:购买看完所有后,仍觉学无所获,钱全部返还。