這篇博文分享的是 C#中使用OpenSSL的公鑰加密/私鑰解密 一文中的解決方法在 .net core 中的改進(jìn)。之前的博文針對的是 .NET Framework ,加解密用的是 RSACryptoServiceProvider 。雖然在 corefx(.NET Core Framework) 中也有 RSACryptoServiceProvider ,但它目前只支持 Windows ,不能跨平臺。

之前的 new RSACryptoServiceProvider(); 代碼在 mac 上運行,會報下面的錯誤:

System.PlatformNotSupportedException: Operation is not supported on this platform.
at System.Security.Cryptography.RSACryptoServiceProvider..ctor()

要解決這個問題,需要改用  System.Security.Cryptography.RSA.Create() 工廠方法,使用它之后,在 Windows 上創(chuàng)建的是 System.Security.Cryptography.RSACng 的實例,在 Mac 與 Linux 上創(chuàng)建的是 System.Security.Cryptography.RSAOpenSsl 的實例,它們都繼承自 System.Security.Cryptography.RSA 抽象類。

使用了 RSA.Create() 之后,帶來了一個問題,RSA 中沒有 RSACryptoServiceProvider 中的以下2個簽名的加解密方法。

public byte[] Encrypt(byte[] rgb, bool fOAEP); public
        		

網(wǎng)友評論