为什么在Linux / mono上使用PCLCypto会出现DLLnotFoundException

时间:2018-09-24 00:35:34

标签: c# mono pcl-crypto

我有一个可以在Windows上运行的C#应用​​程序,但是当我尝试使用Mono在Linux上运行它时,出现此错误:

  

System.DllNotFoundException:NCrypt

     

在(包装器托管到本地)PInvoke.NCrypt.NCryptOpenStorageProvider(PInvoke.NCrypt / SafeProviderHandle&,string,PInvoke.NCrypt / NCryptOpenStorageProviderFlags)

     

位于PInvoke.NCrypt.NCryptOpenStorageProvider(System.String providerName,PInvoke.NCrypt + NCryptOpenStorageProviderFlags标志)[0x00000]

     

在PCLCrypto.NCryptAsymmetricKeyProviderBase.ImportPublicKey(System.Byte [] keyBlob,PCLCrypto.CryptographicPublicKeyBlobType blobType)

这通过以下方式调用:

var rsa = WinRTCrypto.AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithm.RsaPkcs1);

我该如何解决?

1 个答案:

答案 0 :(得分:2)

此库或至少正在使用的特定API,似乎正在使用平台调用来使用Windows特定的库,这些库是操作系统的一部分(CNG的ncrypt.dll)。它似乎无法在非Windows平台上运行。

您应该使用备用库来支持您要在所需平台上使用的加密功能。