为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Java Spring 中实现 ASN1 解码?

如何在 Java Spring 中实现 ASN1 解码?

紫衣仙女 2021-08-04 15:05:56
我需要从复杂的序列中解码 ASN1 字符串,但我无法弄清楚这整个事情是如何工作的。我想做类似的事情decoder = ASN1Library.initWithSequence(sequenceString); ParseObject obj = decoder.decodeString(asn1String);我尝试了一些库,但没有一个允许我做我想做的,或者我无法理解它们是如何工作的。我想我需要自己实现一个解析器。任何人都可以解释如何做到这一点?非常感谢你!
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

好的,这就是我发现的。我正在使用com.objsys.asn1j.runtime图书馆;我需要在 Java 类中实现整个序列,并使每个类扩展Asn1Seq,Asn1Integer或库中的其他超类。在扩展 Asn1Seq 的每个类(即所有类似 Sequence 的类)中,我需要覆盖该decode方法,并且在主体中我必须decode再次调用该类的每个属性。


快速示例(包括Type1和Type2扩展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);

}



查看完整回答
反对 回复 2021-08-04
  • 1 回答
  • 0 关注
  • 700 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信