【问题标题】:How to implement ASN1 decoding in Java Spring?如何在 Java Spring 中实现 ASN1 解码?
【发布时间】:2018-08-21 08:31:23
【问题描述】:

我需要从一个复杂的序列中解码 ASN1 字符串,但我无法弄清楚这整个过程是如何工作的。我想做类似的事情

decoder = ASN1Library.initWithSequence(sequenceString);
ParseObject obj = decoder.decodeString(asn1String);

我尝试了几个库,但没有一个允许我做我想做的事,或者我无法理解它们是如何工作的。我想我需要自己实现一个解析器。

谁能解释一下怎么做? 非常感谢!

【问题讨论】:

  • 此类请求不在此处讨论。
  • @GhostCat 你完全正确,很抱歉我没有花太多精力写下一个好问题。我还编辑了原始问题。
  • 这更好,不是完美,但更好;-) ...对于一个“完美”的问题,你会概述你想要的东西,而这些库没有提供。但至少对我来说,现在的问题是“足够好”。

标签: java spring asn.1


【解决方案1】:

好的,这就是我找到的。 我正在使用com.objsys.asn1j.runtime 库;我需要在 Java 类中实现整个序列,并使每个类从库中扩展 Asn1SeqAsn1Integer 或其他超类。 在每个扩展 Asn1Seq 的类(即所有类似序列的类)中,我需要重写 decode 方法,并且在正文中,我必须在类的每个属性上再次调用 decode

快速示例(Type1Type2 扩展 Asn1Integer):

class SeqData extends Asn1Seq {

private static final long serialVersionUID = 55L;

  Type1 attribute1;
  Type2 attribute2;

@Override
public int getElementCount() {
    return 2;
}

@Override
public String getElementName(int arg0) {
    switch (arg0) {
    case 0:
        return "attribute1";
    case 1:
        return "attribute2";
    }
    return "";
}

@Override
public Object getElementValue(int arg0) {
    switch (arg0) {
    case 0:
        return attribute1;
    case 1:
        return attribute2;
    }
    return null;
}

@Override
public void decode(Asn1PerDecodeBuffer arg0) throws Asn1Exception, IOException {

    attribute1 = new Type1();
    attribute1.decode(arg0, 1L, 62L);

    attribute2 = new Type2();
    attribute2.decode(arg0, 1L, 62L);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多