[英]Can org.bouncycastle.openssl.PEMReader read java.security.PrivateKey?
[英]Why can't Bouncycastle's PEMReader read this M2Crypto-generated PEM?
我使用M2Crypto使用以下Python代码生成PEM格式的RSA密钥对:
bio = BIO.MemoryBuffer()
key_pair = RSA.gen_key(1024, 65537)
key_pair.save_key_bio(bio, cipher=None)
return bio.read()
下面的Java代码使用Bouncycastle尝试读取它:
String signPem = ...;
PEMReader pemReader = new PEMReader(new StringReader(signPem));
Object signingKey = pemReader.readObject();
signPem
字符串与bio.read()
返回的字符串相同; 在两个程序之间,我看不到任何数据混杂; 是-----BEGIN RSA PRIVATE KEY-----\\n
等。
但是,readObject()调用将引发ClassCastException:
java.lang.ClassCastException: org.bouncycastle.asn1.DERSequence
at org.bouncycastle.asn1.ASN1Object.fromByteArray(Unknown Source)
at org.bouncycastle.openssl.PEMReader.readKeyPair(Unknown Source)
at org.bouncycastle.openssl.PEMReader.readObject(Unknown Source)
因此,很明显BC由于某种原因误认为PEM中的数据不是密钥对-但是为什么呢?
将调试器带到Bouncycastle之后,我发现了“原因”,但这只会使我感到困惑。 即使所有类型似乎都是正确的,强制转换也会失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.