首页 > 解决方案 > 从 ByteArray 创建 Asn1Object 时出错(在对象之后发现额外数据)

问题描述

我在用充气城堡创建 Asn1 对象时遇到了一些麻烦。我生成了一个未使用的密钥,试图说明我在做什么。

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

我的程序片段可以访问 BEGIN 和 END 之间的位(基本上,上面的片段没有第一行和最后一行)。

我的代码片段看起来像这样(从在线教程复制),输入 privateKey 是一个多行字符串(上面的片段没有第一行和最后一行,包括 /r/n 但我尝试删除换行符)。

byte[] keyBytes = Convert.FromBase64String(privateKey);
var privKeyObj = Asn1Object.FromByteArray(keyBytes);
var privStruct = RsaPrivateKeyStructure.GetInstance((Asn1Sequence)privKeyObj);

我得到[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.IOException: extra data found after object。我的输入是否需要进一步清理?我希望能够创建一个用于签署 JWT 的私钥。

标签: bouncycastle

解决方案


推荐阅读