Разобрать кодировку ASN.1 с использованием Java - PullRequest
0 голосов
/ 17 сентября 2018

Как я могу прочитать файл ASN.1, используя Java, если файл имеет следующий синтаксис:

Tagged[6]IMPLICIT
 Sequence
  Tagged[0]IMPLICIT
   OCTET STRING[3](UGW)
  Tagged[1]IMPLICIT
   OCTET STRING[5](nair1)
  Tagged[3]IMPLICIT
   OCTET STRING[13](6430408182034)
  Tagged[5]IMPLICIT
   OCTET STRING[19](201211113336+0300)
  Tagged[6]IMPLIIT
   OCTET STRING[5](nair1)

1 Ответ

0 голосов
/ 01 января 2019

ASN.1 ваше определение выглядит ошибочным.Я бы посоветовал исправить его следующим образом:

My-Schema DEFINITIONS IMPLICIT TAGS ::= 
BEGIN
  MySequence ::= SEQUENCE       
  {                                                     
     str1      OCTET STRING (SIZE(1..50)),
     str2      OCTET STRING (SIZE(1..50)),
     str3      OCTET STRING (SIZE(1..50)),
     str4      OCTET STRING (SIZE(1..50)),
     str5      OCTET STRING (SIZE(1..50))
   }                                                     
END

Его можно легко закодировать с помощью API-интерфейса bountycastle

import org.bouncycastle.asn1.*;

    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(new DEROctetString("str1".getBytes()));
    v.add(new DEROctetString("str2".getBytes()));
    v.add(new DEROctetString("str3".getBytes()));
    v.add(new DEROctetString("str4".getBytes()));

    byte[] encoded = new DERSequence(v).getEncoded();
...