Разобрать кодировку ASN.1 с помощью Java

Как я могу прочитать файл ASN.1 с помощью Java, если файл имеет этот синтаксис и с расширением файла .air, а не расширением файла .asn

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)

person M.Kamal    schedule 17.09.2018    source источник
comment
Хотя ASN.1 связан с безопасностью, ваш вопрос не является вопросом безопасности, поскольку он полностью касается программирования.   -  person AndrolGenhald    schedule 17.09.2018
comment
на самом деле я собираюсь запрограммировать систему потокового посредничества, поэтому мой первый шаг - попытаться разобрать этот код в безопасность программы Java, которая будет включена в следующие шаги.   -  person M.Kamal    schedule 17.09.2018
comment
Затем не стесняйтесь задавать новый вопрос, когда дойдете до следующих шагов :) -- Я согласен с Андролом в том, что этот вопрос касается исключительно программирования. Я голосую за переход на Stack Overflow, где вы получите лучший ответ.   -  person Mike Ounsworth    schedule 17.09.2018
comment
@MikeOunsworth спасибо за совет, я так и сделаю.   -  person M.Kamal    schedule 17.09.2018


Ответы (1)


Ваше определение 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

Его можно легко закодировать с помощью bountycastle ASN.1 API.

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();
person Kemal Atik    schedule 01.01.2019
comment
что делать, если мой файл имеет расширение .air, а не расширение .asn, как с этим бороться - person M.Kamal; 18.09.2019
comment
что делать, если мой файл имеет расширение .air, а не расширение .asn, как с этим бороться - person M.Kamal; 18.09.2019