我已经使用1024 RSA生成了此测试公钥,然后在另一个编码平台中将它编码为DER和Base64。我将密钥复制到Android/Eclipse中的一个字符串中,我试图用KeyFactory将它变成公钥。无论我尝试什么,它都会给我一个InvalidKeySpecException。任何建议都将不胜感激。从字符串创建RSA公钥
private void prepKeys() {
String AppKeyPub = "MIGHAoGBAOX+TFdFVIKYyCVxWlnbGYbmgkkmHmEv2qStZzAFt6NVqKPLK989Ow0RcqcDTZaZBfO5" +
"5JSVHNIKoqULELruACfqtGoATfgwBp4Owfww8M891gKNSlI/M0yzDQHns5CKwPE01jD6qGZ8/2IZ" +
"OjLJNH6qC9At8iMCbPe9GeXIPFWRAgER";
// create the key factory
try {
KeyFactory kFactory = KeyFactory.getInstance("RSA");
// decode base64 of your key
byte yourKey[] = Base64.decode(AppKeyPub,0);
// generate the public key
X509EncodedKeySpec spec = new X509EncodedKeySpec(yourKey);
PublicKey publicKey = (PublicKey) kFactory.generatePublic(spec);
System.out.println("Public Key: " + publicKey);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
X509EncodedKeySpec预计在SubjectPublicKeyInfo进行格式(参见RFC 5280)的一个关键。您的密钥采用Java不支持的更简单的RSAPublicKey格式。解决方案:使用正确的Java支持格式对密钥进行编码。 –
好吧,我不确定我能否在其他平台上生成密钥,但我当然会欣赏这些信息,并会试一试。谢谢。 – raximus