41

外部ソース (Android ストア) からの bse64 エンコードされた文字列の公開鍵があり、署名されたコンテンツを検証するためにそれを使用する必要があります。文字列を java.security.PublicKey インターフェイスのインスタンスに変換するにはどうすればよいですか。それが違いを生む場合、私はJava 6を使用しています。

キーは(おそらく)標準のJavaライブラリを使用して生成され、弾む城ではありません(リモートチームからのものなので、わかりません)。彼らのサンプル コードでは、Security.generatePublicKey(base64EncodedPublicKey); を使用するように指示されています。しかし、標準 Java の Security オブジェクトにはそのようなメソッドがありません。

4

6 に答える 6

70

上記の回答のコード

public static PublicKey getKey(String key){
    try{
        byte[] byteKey = Base64.decode(key.getBytes(), Base64.DEFAULT);
        X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(byteKey);
        KeyFactory kf = KeyFactory.getInstance("RSA");

        return kf.generatePublic(X509publicKey);
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return null;
}
于 2014-07-01T03:59:14.800 に答える
29

ニヤリとしてOK ...これを試してみてください

  • base64 でキー データをデコードして、バイト配列 (byte[]) を取得します。
  • バイト配列を使用して新しい X509EncodedKeySpec を作成します
  • ここで RSA を想定して KeyFactory.getInstance("RSA") を使用して KeyFactory のインスタンスを取得します。
  • X509EncodedKeySpec でメソッド generatePublic(KeySpec) を呼び出します
  • Result /sho/ は、使用するための公開鍵です。
于 2012-06-05T18:35:47.443 に答える