外部ソース(Androidストア)からのbse64encoded文字列公開鍵があり、署名されたコンテンツを検証するためにそれを使用する必要があります。文字列をJava.security.PublicKeyインターフェースのインスタンスに変換するにはどうすればよいですか。私はJava 6にいます。それが違いを生むなら。
キーは(おそらく)標準のJava libを使用して生成され、弾力のある城ではありません(リモートチームからのものであるため、わかりません)。サンプルコードでは、Security.generatePublicKey(base64EncodedPublicKey);を使用するとしています。しかし、標準のセキュリティオブジェクトJavaにはそのようなメソッドはありません。
にこにこして...これを試してみてください
上記の回答のコード
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;
}
これを試して....
PublicKey getPublicKey(byte[] encodedKey) throws NoSuchAlgorithmException, InvalidKeySpecException
{
KeyFactory factory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(encodedKey);
return factory.generatePublic(encodedKeySpec);
}
海綿城を使用して
public static PublicKey getPublicKeyFromString(String key) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
org.spongycastle.asn1.pkcs.RSAPublicKey pkcs1PublicKey
= org.spongycastle.asn1.pkcs.RSAPublicKey.getInstance(decodeB64(key));
RSAPublicKeySpec keySpec
= new RSAPublicKeySpec(pkcs1PublicKey.getModulus(), pkcs1PublicKey.getPublicExponent());
PublicKey publicKey = keyFactory.generatePublic(keySpec);
return publicKey;
}