将 Base58 公钥解码回PublicKey
实例似乎不起作用:
parsePublicKeyBase58("DLG9nscvKPbgagoLP7jr4oc5FygazKr7pdADZMGFizmpV8")
线程"main"中的异常 java.lang.IllegalArgumentException: 无法从 byte[] 构造序列:遇到未知标记 9 at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source( at org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance(未知来源( at net.corda.core.crypto.Crypto.decodePublicKey(Crypto.kt:343( at net.corda.core.utilities.EncodingUtils.parsePublicKeyBase58(EncodingUtils.kt:81( 在测试中。Program$Companion.main(Program.kt:15( 在测试中。Program.main(Program.kt(
这是怎么回事?
你有什么错误——斯内哈·达姆勒?
parsePublicKeyBase58("G9nscvKPbgagoLP7jr4oc5FygazKr7pdADZMGFizmpV8")
线程"main"中的异常 java.lang.IllegalArgumentException: 无法从 byte[] 构造序列:DEF 长度 31 对象被 1 截断 at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source( at org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance(未知来源( at net.corda.core.crypto.Crypto.decodePublicKey(Crypto.kt:343( at net.corda.core.utilities.EncodingUtils.parsePublicKeyBase58(EncodingUtils.kt:81( 在测试中。ProgramKt.main(Program.kt:6(
您可能使用了不正确的 Base58 字符串。我做了以下操作,它奏效了。
将公钥编码为 base58
Base58.encode(party.getOwningKey().getEncoded()).toString();
这给了我字符串GfHq2tTVk9z4eXgyH7WThpV3Qn7zdCm4cKw8J5x8kVGnVkGtgAmh3KKE7EN4
解码它:
PublicKey publicKey = EncodingUtils.parsePublicKeyBase58("GfHq2tTVk9z4eXgyH7WThpV3Qn7zdCm4cKw8J5x8kVGnVkGtgAmh3KKE7EN4");