我正在调用iOSSecKeyGeneratePair
方法来生成RSA密钥对。现在,我想从中提取RSA参数(公共数据和私有数据)。我怎样才能做到这一点?
我找到了CryptoExercise示例,但是我没有看到它实际上是将密钥导出到其原始数据。此外,这是我真的很难理解的Objective-C。
我正在Xamarin.iOS(C#)移动应用程序中执行此操作,因此我需要通过将必需的互操作API调用到iOS中来最终实现用C#编写的解决方案(就像我对的调用一样SecKeyGeneratePair
)。
对于熟悉Xamarin的人,是的,我知道我可以使用new RSACryptoServiceProvider()
它来轻松得多。当我使用本机API生成RSA密钥(甚至加密位本身)时,差异是性能提高了2-3个数量级。因此,尽管我必须使用本机API来进行RSA工作,但我还需要获取原始数据,以便可以跨平台使用。
AFAIK,您不能直接提取参数。在Apple开发人员论坛上有一些关于此的讨论(您可能要检查一下)。可悲的是,苹果工程师的答案是假设(关于发布的代码)是实施细节,并且随时可能更改。
您仍然可以使用可用的API间接执行此操作,例如将其导出为PKCS#12,然后从中获取RSA参数。
更新:验证后,您只能导入PKCS#12-因此这无助于导出私钥。我回到目前尚无任何支持的方法。除了使用托管代码外,我唯一想到的安全选择是包括本机代码(第3方库)以生成密钥对。
我曾经尝试过类似的操作(它是导入操作,而不是导出操作),但是额外操作所需的时间使我的代码比仅使用C#慢。您的情况与YMMV不同。
注意:在我看来,钥匙串访问(未进行处理,已加密...)导致了大部分速度下降。导入一次使用的公钥是不值得的-但是,如果您多次使用(重用)公钥,那么您(一次)的花费可能是可以接受的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句