以前我们使用RSA加密主要是使用RSACryptoServiceProvider
这个类,在.NET Core中也有这个类,但是这个类并不支持跨平台,所以如果你是用这个类来进行加/解密在windows上运行是完全没有错误的,但是只要你一放到Linux下就会出现异常。
查阅资料得知,要解决这个问题,需要改用 System.Security.Cryptography.RSA.Create()
工厂方法,使用它之后,在 Windows 上创建的是 System.Security.Cryptography.RSACng
的实例,在 Mac 与 Linux 上创建的是 System.Security.Cryptography.RSAOpenSsl
的实例,它们都继承自 System.Security.Cryptography.RSA
抽象类。
这里要讲一下RSA2算法。
什么是RSA2 ?RSA2 是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。该算法比SHA1WithRSA有更强的安全能力。
RSA2 | SHA256WithRSA | (强烈推荐使用),强制要求RSA密钥的长度至少为2048 |
RSA | SHA1WithRSA | 对RSA密钥的长度不限制,推荐使用2048位以上 |
签名的作用:保证数据完整性,机密性和发送方角色的不可抵赖性
看下代码:
HashAlgorithmName.SHA256 //获取表示“SHA256”的哈希算法名称。
RSASignaturePadding.Pkcs1 //获取使用 PKCS #1 v1.5 填充模式的对象。
原文地址:https://www.cnblogs.com/wsprince/p/10710566.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com