我想与基于Java的服务器或Android设备共享在iPhone/iPad上生成的公钥。在Java方面(服务器或安卓),我想在java.security和libcommonCrypto ( SecKeyRef )上使用iOS。
除了这两个平台之间的公钥交换之外,我什么都能用。通过使用SecItemCopyMatching,我只能将公钥导出为其他任何东西都不支持的格式,而不是苹果。使用Java,我可以以X509证书(通过java.security.X509EncodedKeySpec)或作为模块和指数(通过java.security.RSAPublicKeySpec)加载公钥。
现在,我需要知道如何将SecKeyRef导出为X509证书,或者(我猜是更容易的解决方案)从它获得模块和指数。我也需要后退的路。
下面是从SecKeyRef加载并编码到BASE64的一些示例公钥:
MIGJAoGBAMYgXP6rvD/Y8F0VQE0HvxpVnnOxXYl5TDlOfW/leyrCLWGWg9Jp+Tl9dYvK/zWgNpoEfFzMVRpUk9UHcIaDWHW3g0BpS2MVC3Vs/0e2eu6S2WMGHpzqcJB51jJRbnqXQ23nVKC2YE520Po3EvFyTr8MlFJqTCJrovgc7fze4RI5AgMBAAE=发布于 2014-03-07 16:00:23
libcommonCrypto正在使用的协议是用RFC3347描述的,它是一个ASN.1序列的模数和公共指数。
RSA公钥应该用ASN.1类型的RSAPublicKey表示: RSAPublicKey ::=序列{模整数,-n publicExponent整数-- e}
引用RFC3347,Ver。2.1、A.1.1
https://stackoverflow.com/questions/22065628
复制相似问题