разобрать и прочитать открытый ключ в java

У меня есть требование прочитать открытый ключ с помощью java и проанализировать его, чтобы проверить его действительность, показатель степени, модуль или его действительность или нет. Я попробовал приведенный ниже код и столкнулся с проблемами. Не могли бы вы помочь мне найти решение этой проблемы?

public static void getPublicKey(String key) throws Exception {

key = key.replaceAll("-----BEGIN SSH2 PUBLIC KEY-----", "");
key = key.replaceAll("-----END SSH2 PUBLIC KEY-----", "");
KeyFactory kFactory = KeyFactory.getInstance("RSA", new BouncyCastleProvider());
byte pub_llave[] =  new BASE64Decoder().decodeBuffer( key ) ;
X509EncodedKeySpec spec =  new X509EncodedKeySpec(pub_llave);
PublicKey pubkey = (PublicKey) kFactory.generatePublic(spec);
}

И вот исключение:

java.lang.IllegalArgumentException: unknown object in getInstance: org.bouncycastle.asn1.DERApplicationSpecific
    at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source)
    at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source)
    at org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance(Unknown Source)

person Sirish    schedule 26.07.2012    source источник
comment
какие у тебя проблемы? какая-нибудь ошибка?   -  person Tomer    schedule 26.07.2012
comment
@ftom2 - Да. Ниже приведена трассировка исключения — java.lang.IllegalArgumentException: неизвестный объект в getInstance: org.bouncycastle.asn1.DERApplicationSpecific at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source) at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Источник) по адресу org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance (неизвестный источник)   -  person Sirish    schedule 26.07.2012
comment
Пожалуйста, не размещайте код в комментариях, просто отредактируйте свой вопрос и добавьте его.   -  person Tomer    schedule 26.07.2012
comment
ssh не использует открытые ключи в кодировке X509. См. этот вопрос: stackoverflow.com/questions/3706177/.   -  person martijno    schedule 16.08.2012


Ответы (1)


Ключи SSH не являются ключами X.509, поэтому он не может работать (таким образом).

https://jsvnserve.googlecode.com/svn/trunk/src/main/java/com/googlecode/jsvnserve/sshd/PublicKeyReaderUtil.java показывает, как анализировать ключи SSH.

person MrTux    schedule 04.08.2014