我有一个可以在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);
我该如何解决?
答案 0 :(得分:2)
此库或至少正在使用的特定API,似乎正在使用平台调用来使用Windows特定的库,这些库是操作系统的一部分(CNG的ncrypt.dll)。它似乎无法在非Windows平台上运行。
您应该使用备用库来支持您要在所需平台上使用的加密功能。