【问题标题】:parse and read a public key in java解析和读取java中的公钥
【发布时间】:2012-07-24 19:59:38
【问题描述】:

我需要使用 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)

【问题讨论】:

  • 您有什么问题?有什么错误吗?
  • @ftom2 - 是的。下面是异常跟踪 - 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来源)在 org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance(未知来源)
  • 请不要在 cmets 中发布代码,只需编辑您的问题并添加即可。
  • ssh 不使用 X509 编码的公钥。看到这个问题:stackoverflow.com/questions/3706177/….

标签: java bouncycastle public-key-encryption


【解决方案1】:

SSH 密钥不是 X.509 密钥,因此它不能工作(这种方式)。

https://jsvnserve.googlecode.com/svn/trunk/src/main/java/com/googlecode/jsvnserve/sshd/PublicKeyReaderUtil.java 展示了一种如何解析 SSH 密钥的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2019-01-13
    • 2017-11-21
    相关资源
    最近更新 更多