Определите, использует ли файл кодировку BER - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в кодировке ASN.1, и мне интересно, есть ли в кодированном файле BER заголовок или что-нибудь, что идентифицирует его как файл в кодировке BER. Я имею в виду, если кто-то просто вручает мне файл, могу ли я сказать, что он закодирован в формате BER (или CER или DER)?

Тогда я мог бы иметь функцию, которая работала бы так:

if FILE is BER-encoded
  return "BER"
else if FILE is DER-encoded
  return "DER"
else
  return "It's something else"

Но я не уверен, что кодирование BER работает таким образом, или вам нужно что-то для декодирования, прежде чем вы даже узнаете, является ли это BER.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Как говорит @Henry, специального заголовка не существует.

Однако вы можете узнать, содержит ли ваш файл данные в кодировке BER, пытаясь их декодировать.

Перейти к http://asn1 -playground.oss.com / , убедитесь, что установлен флажок BER, выберите Binary file в раскрывающемся списке Data (в правом верхнем углу) и загрузите двоичный файл.

Если вашфайл содержит действительные данные в кодировке BER, он будет отображаться в CONSOLE OUTPUT

Однако вы можете быть разочарованы результатом: даже если он действителен, вы можете не увидеть никакой полезной информации (вам нужна схема,иначе спецификация, чтобы понять данные).

0 голосов
/ 11 мая 2018

Нет специального заголовка, который бы идентифицировал кодировку BER.Однако в этом формате существует большая избыточность, поэтому вы можете идентифицировать многие последовательности байтов как недопустимые значения BER, если проанализируете их полностью.

Каждое кодирование DER также является допустимым кодированием BER, но не обязательно другимнаоборот.Вы можете прочитать последовательность байтов как BER, а затем перекодировать абстрактное значение с помощью DER и проверить, получили ли вы тот же результат.Если да, то изначально это был DER.

...