1

iPhone/iPad で生成された公開鍵を Java ベースのサーバーまたは Android デバイスと共有したいと考えています。Java 側 (サーバーまたは Android)では、iOS で (SecKeyRef のもの)を使用java.securityしたいと思います。libcommonCrypto

これら 2 つのプラットフォーム間の公開鍵の交換を除いて、すべてが機能しています。を使用SecItemCopyMatchingすることで、Apple 以外ではサポートされていない形式にのみ公開鍵をエクスポートできます。Java を使用すると、公開鍵を X509 証明書 ( 経由java.security.X509EncodedKeySpec) またはモジュールと指数 ( 経由java.security.RSAPublicKeySpec) としてロードできます。

SecKeyRefここで、X509証明書としてエクスポートする方法、または(より簡単な解決策だと思います)モジュールと指数を取得する方法を知る必要があります。そして、私は後ろ向きの道も必要です。

SecKeyRefからロードされ、 BASE64 にエンコードされた公開鍵のサンプルを次に示します。

MIGJAoGBAMYgXP6rvD/Y8F0VQE0HvxpVnnOxXYl5TDlOfW/leyrCLWGWg9Jp+Tl9dYvK/zWgNpoEfFzMVRpUk9UHcIaDWHW3g0BpS2MVC3Vs/0e2eu6S2WMGHpzqcJB51jJRbnqXQ23nVKC2YE520Po3EvFyTr8MlFJqTCJrovgc7fze4RI5AgMBAAE=
4

1 に答える 1

1

AppleslibcommonCryptoが使用しているプロトコルはRFC3347で説明されており、ASN.1 シーケンスとしての係数と公開指数です。

RSA 公開鍵は、ASN.1 タイプの RSAPublicKey で表す必要があります。

  RSAPublicKey ::= SEQUENCE {
      modulus           INTEGER,  -- n
      publicExponent    INTEGER   -- e
  }

RFC3347 からの引用、Ver. 2.1、A.1.1

于 2014-03-07T16:00:23.927 に答える