Обнаружение типа файла RSA pubkey - PullRequest
2 голосов
/ 09 июля 2009

Я получил RSA pubkey.dat (почти очевидно, что это), который имеет следующую структуру содержимого:

  • ASN1 Целое число около 1024 бит (модуль)
  • ASN1 Integer (Exponent)
  • Blob 256 байтов (подпись)

Нет тегов типа "---- begin ---" или около того. чистые шестнадцатеричные значения в нем.

Есть какой-нибудь способ определить его формат, например, DER / PEM / etc, поэтому я могу открыть его с помощью крипто-библиотек python или crypto ++ на c ++?

(или если оно соответствует общедоступному стандартному имени структуры для проверки)

Похоже, это не PEM, поскольку M2crypt не может его загрузить.

Заранее спасибо.

1 Ответ

2 голосов
/ 01 сентября 2009

PEM-кодировка имеет обязательный формат:

-----BEGIN typeName-----
base64 of DER value
-----END typeName-----

где для открытых ключей typeName = "PUBLIC KEY" (AFAIR), что очень легко проверить с помощью регулярного выражения, такого как:

/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/

Если это не PEM, это обычно просто DER.

Представление DER последовательности SENENCE ASN.1 всегда начинается с 0x30, поэтому обычно, когда мне нужно декодировать поток DER-or-PEM, который я точно знаю, что это последовательность ASN.1 (наиболее сложные значения, в любом случае, SEQUENCE) Я проверяю первый байт: если он равен 0x30, я декодирую как DER, иначе я декодирую как PEM.

Вы можете быстро проверить свои данные ASN.1, используя мой собственный анализатор ASN.1 с открытым исходным кодом (это весь Javascript на стороне клиента, поэтому я не буду видеть ваши данные).

...