我有一个用Bouncy Castle API用java编写的asn1解析器。它工作得很好,并且在解析了数百万个文件的过程中工作了2年。
现在对于一个特定的文件,我有一个例外,但我无法准确理解它的生成位置和原因。也许这只是一个腐败的流,但我希望能够做一个低级分析,并了解异常是什么。
有人有这些课程的经验吗?
代码
ASN1InputStream stream =new ASN1InputStream(new ByteArrayInputStream(
(byte[]) asn1));
stream.readObject();
堆栈跟踪
java.lang.IllegalArgumentException:BOOLEAN值应该包含1个字节 at org.bouncycastle.asn1.ASN1Boolean.fromOctetString(Unknown Source) at org.bouncycastle.asn1.ASN1InputStream.createPrimitiveDERObject(Unknown Source) at org.bouncycastle.asn1.ASN1StreamParser.readObject(Unknown Source) 在org.bouncycastle.asn1.ASN1StreamParser.readVector(未知来源) 在org.bouncycastle.asn1.ASN1StreamParser.readTaggedObject(未知来源) at org.bouncycastle.asn1.ASN1InputStream.buildObject(Unknown Source) at org.bouncycastle.asn1.ASN1InputStream.readObject(Unknown Source) 在com.xx.yyy.parser.Asn1Parser.parseHorizontal(Asn1Parser.java:384)
答案 0 :(得分:1)
您可以知道异常意味着从网上下载bouncycastle来源。 然后按照堆栈跟踪中显示的文件进行操作,在本例中为ASN1Boolean.java。 此异常意味着ASN1包含一个标签BOOLEAN,其字段长度为!= 1。
我无法下载您的文件,因为我已阻止此地址。 无论如何,尝试使用其他工具对其进行解码,以确保它是ASN.1编码错误。