gpt4 book ai didi

java - 为什么 BouncycaSTLe 的 PEMReader 无法读取这个 M2Crypto 生成的 PEM?

转载 作者:行者123 更新时间:2023-12-01 15:53:01 25 4
gpt4 key购买 nike

我使用以下 Python 代码(使用 M2Crypto)生成 PEM 格式的 RSA key 对:

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 中的数据识别为不是 key 对 - 但为什么呢?

最佳答案

在 BouncycaSTLe 上调试器后,我发现了“原因”,但这只会让我更加困惑;即使所有类型似乎都是正确的,转换还是失败。

If A extends B extends C, why can I cast to A but get a ClassCastException casting to C?

关于java - 为什么 BouncycaSTLe 的 PEMReader 无法读取这个 M2Crypto 生成的 PEM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5623205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com