我是 RSA 的新手。我已经使 Windows 和 Xamarin.Android 客户端应用程序与 ASP.NET MVC .NET 4.7.2 应用程序很好地通信。一切正常。客户端应用程序可以与服务器共享他们的公钥,服务器可以与客户端应用程序做同样的事情。
现在我在 Xamarin.iOS 中实施解决方案,并按照本教程创建密钥对:https ://msicc.net/how-to-perform-asymmetric-encryption-without-user-input-hardcoded-values-with- xamarin-ios/
我的问题是将公钥导出到服务器。服务器无法识别公钥。
我的 C# 代码在 Xamarin.iOS 中进行了导出:
var cert = this.publicKey.GetExternalRepresentation();
var publicKeyBytes = new byte[cert.Length];
System.Runtime.InteropServices.Marshal.Copy(cert.Bytes, publicKeyBytes, 0, Convert.ToInt32(cert.Length));
return Convert.ToBase64String(publicKeyBytes, Base64FormattingOptions.InsertLineBreaks);
在服务器端,有我的 c# 代码:
var bytes = Convert.FromBase64String(cer);
X509Certificate2 cert = new X509Certificate2(bytes);
this.rsaDistant = cert.GetRSAPublicKey();
我花了很长时间查看帖子,并在 swift、objectif c 中看到了许多示例。似乎 iOS 没有导出为 X.509 格式。我还看到微软在 Xamarin.iOS 中制作了像 SecCertificate 和 SecCertificate2 这样的类,可以导出 X.509 证书,但是当我使用它时,调试器在导出时冻结。
我怎样才能实现我的目标?你已经用 Xamarin.iOS 成功了吗?
谢谢您的帮助 !