我有一个从外部源(Android商店)一bse64encoded串公钥,我需要用它来验证签名的内容。 我怎么能转换串入java.security.PublicKey接口的实例。 我在Java 6,如果有差别。
最关键的是(可能)使用标准的Java lib和不充气城堡(它从远程团队,所以我不知道)产生。 他们的代码示例表示使用Security.generatePublicKey(base64EncodedPublicKey); 但在标准Java安全对象有没有这样的方法。
我有一个从外部源(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;
}