有没有一个免费的Java包可以读取、操作和写入ASN.1格式的数据?

9

有没有一个免费的Java包可以读取、操作和写入ASN.1格式的数据?

它必须满足以下要求:

  1. 免费
  2. 轻量级
  3. 自包含(不依赖于外部库,如Apache commons)
  4. 支持Java 5(不支持Java 6),最好支持Java 4。
4个回答

5

由于该链接似乎已经失效:源代码可以在http://www.chaosinmotion.com/sources/asn.1.zip找到。 - Martin Schröder

2

免费的BouncyCastle库提供了低级别的ASN.1解析。您不需要将BC安装为提供程序即可使用ASN.1功能。它有1.4及以上版本。它没有外部依赖项。由于默认捆绑包含所有BC提供程序类,因此如果您想要更紧凑的内容,则可能需要重新打包。


这是一个可行的选择,但它似乎并不符合轻量级要求(我认为轻量级应该在50K以下)。 - Lawrence Dol
是的,我写了自己的解码器类。大概有200行代码吧。我已经使用它超过10年了,虽然我想重构它以提供不同的接口,但它绝对满足了需求。 - erickson
@Erickson:你有没有想要分享一下的机会?(虽然对我来说现在它不是很重要,因为我已经通过PKCS#12密钥库解决了我的直接问题,所以不用着急。) - Lawrence Dol
仔细观察BC,它距轻量级还有很长的路要走(近400个类 - 并将非核心类从核心类中分离出来需要大量工作)。 - Lawrence Dol
我写的代码不是我的,不能分享。但是我正在考虑编写自己的解码器,它将是事件驱动的,就像SAX解析器一样。如果我这样做了,我愿意分享。 - erickson

2
您可以使用jASN1,它是根据LGPL许可证发布的,应该能够满足您的所有需求。它还非常高效。

0

我需要能够在krypt中解析任何类型的ASN.1数据。虽然krypt是一个Ruby项目,但您可能想要查看JRuby扩展 - 用于处理ASN.1解析/编码的代码完全是用Java编写的,并且模块化程度足以轻松提取。

我还制作了一个仅限Java版本,但它缺少前者的一些高级功能。但由于它简洁,也许这是一个很好的开始机会。

两者都不包含任何其他依赖项,仅使用标准JDK功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接