2009-07-09 2 views
2

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

  • ASN1 Integer из около 1024 бит (модуль)
  • ASN1 Integer (экспонент)
  • Blob из 256 байт (Подпись)

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

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

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

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

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

ответ

2

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

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

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

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

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

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

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

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