【问题标题】:How to Encrypt RSA Key in Xamarin.Forms如何在 Xamarin.Forms 中加密 RSA 密钥
【发布时间】:2020-01-17 00:42:30
【问题描述】:

我有一个来自 CCAvenue 的 Windows 代码,它在通用 Windows 应用程序中运行良好,但如何在 Xamarin.Forms 中实现同样的效果?

public string EncryptRSA(string plainText, string publicKeyString) 
{
    IBuffer dataBuffer = CryptographicBuffer.ConvertStringToBinary(plainText, BinaryStringEncoding.Utf8);
    var asymmAlg = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
    var publicKey = asymmAlg.ImportPublicKey(CryptographicBuffer.DecodeFromBase64String(publicKeyString), CryptographicPublicKeyBlobType.X509SubjectPublicKeyInfo);
    var encryptedData = CryptographicEngine.Encrypt(publicKey, dataBuffer, null);
    return CryptographicBuffer.EncodeToBase64String(encryptedData);
}

如果我复制粘贴相同的代码,则会出现此错误:

【问题讨论】:

  • 那么如果将其粘贴到 Xamarin 表单中会发生什么?
  • 我已附上问题中的截图,请检查
  • 从 nuget 添加了参考 windows.foundation.universalapicontract.winmd?
  • 抱歉,我没有从 Nuget Manager 中找到 Microsoft.Windows.SDK.Contracts 包

标签: c# xamarin.forms uwp xamarin.android


【解决方案1】:

很遗憾,您无法在 Xamarin.Forms 的其他平台上使用此 UWP 特定 API。我还没有找到可以跨平台提供此功能的替代库,因此您可能必须使用特定于平台的 API 来实现它。

您可以使用Dependency Service 并使用您的EncryptRSA 方法创建一个接口,然后在您的解决方案的平台头中实现此接口。你已经有了 UWP 实现,this SO answer 看起来像是一个可能的 iOS 解决方案,this 是一个可能的 Android 实现。

【讨论】:

  • 我使用了可能的 android 实现,但它显示错误“Base.64 在当前上下文中不存在”。我必须导入 Android.Util 还是什么?
  • 谁能告诉我如何在 Xamarin.Android 中使用 .SO 实现上述答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 2011-11-07
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多