0

我必须从 ftp 服务器获取文件,文件格式是二进制asn类型。我需要它们转换为文本文件,并解析相关数据。我正在使用jdk1.7。我也可以使用第三方 jar,但它应该是免费的。如果有人给我一个例子,那就更好了。

4

1 回答 1

0

我想建议你使用: http: //www.bouncycastle.org/java.html

从 ftp 服务器获取后,快速检查使用org.bouncycastle.asn1.util.ASN1Dump类:

ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(data));
ASN1Primitive object = stream.readObject();
System.out.println(ASN1Dump.dumpAsString(object));

这将打印文件的结构。

如果您知道文件的结构,则需要使用如下解析器:

ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(data));
DERApplicationSpecific application = (DERApplicationSpecific) stream.readObject();
ASN1Sequence sequence = (ASN1Sequence) application.getObject(BERTags.SEQUENCE);
Enumeration enum = sequence.getObjects();
while (enum.hasMoreElements()) {
    ASN1Primitive object = (ASN1Primitive) secEnum.nextElement();
    System.out.println(object);
}

顺便说一句,ASN1Primitive是来自字节流的基本 ASN.1 对象。它有很多类型(http://www.borelly.net/cb/docs/javaBC-1.4.8/prov/org/bouncycastle/asn1/ASN1Primitive.html),您可以继承并获得正确的类型。

于 2013-10-16T09:43:54.947 回答