2016-01-13 3 views
2

Я должен анализировать ASN1 закодированные байтовые массивы на объект Java. Моя компания предоставила мне документацию с очень подробными структурами. Однако в их примере данных синтаксического анализа (без кода, только отображение из битов значений):Анализ данных ASN1

  1. Преобразование последние 7 байтов из HEX в двоичный
  2. Присвоение значений на основе конкретных битов в этих 7 байт

нет оплата за теги и длины. В этом примере также пропущены байты обработки. Я не уверен, как я могу разобрать данные, используя эту библиотеку Bouncy Castle ASN1.

Это данные:

Example data

И это отображение:

22 0....... some field = 0 
    .01000.. some field = 8 
    ......1. some field = 1 
    .......0 some field = 0 

ли в ASN1 кодированные данные должны быть в формате Tag-Length-Value или может это использовать какую-то специфическую грамматику?

Сейчас это мой код:

ASN1InputStream asn1InputStream = new ASN1InputStream(
      new ByteArrayInputStream(
       ByteArrayUtil.hexStringToByteArray(
        "16" + "07" + 
        "22" + "00" + "00" + "19" + "BF" + "12" + "E0"))); 
     ASN1Primitive deria5String; 
     while ((deria5String = asn1InputStream.readObject()) != null) { 
      //process 
     } 

Синтаксический эти последние 7 байт дает мне объект типа DERIA5String.

Edit 1: Вот определение ASN1 структур я должен получать чтения InputStream: Data definition

И это пример чтения InputStream, что у меня есть в документации: Example of parsing

+0

Вы могли бы добавить определение грамматики Samle ASN1 для данных образца? –

ответ

1

Должны ли кодированные данные ASN1 быть в формате Tag-Length-Value или , может ли он использовать какую-то специфическую грамматику?

BER и DER кодированные данные используют формат TLV. Однако это не означает, что некоторые октетные строки, целые числа, символьная строка и т. Д. Не имеют специального значения, не представленного в ASN.1, вашим приложением. Если мне угрожать догадки, так как «16 07» соответствует тегу [UNIVERSAL 22] и длине 7, где этот конкретный тег указывает на символьную строку, я бы предположил, что они разбирают некоторые данные из символьной строки.

Смежные вопросы