Я нашел описание формата открытого ключа здесь размещено Виктором из Благоевграда на GSMHosting.com. Как упоминалось в комментариях, оба размера подписи также составляют 2048 бит, так что это довольно убедительно.
Вот содержание поста информации по ссылке:
#define RSANUMBYTES 256 /* длина ключа 2048 бит */
#define RSANUMWORDS (RSANUMBYTES/sizeof(uint32_t))
typedef структура RSAPublicKey {
внутр. лен; /* Длина n[] в количестве uint32_t */
uint32_t n0inv; /* -1 / n[0] по модулю 2^32 */
uint32_t n[RSANUMWORDS]; /* модуль как массив с прямым порядком байтов */
uint32_t rr[RSANUMWORDS]; /* R^2 как массив с прямым порядком байтов */
целая экспонента; /* 3 или 65537 */
} RSAPublicKey;
Я узнал, что есть modexp3
в остальной части исходного кода, который делается более эффективным с использованием n0inv
и рр
значения, поэтому общедоступный показатель степени имеет значение 3 (похоже, он отсутствует в структуре, поэтому я думаю, что эта часть устарела).
Возможно, путаница происходит из-за 40 00 00 00
шестнадцатеричное значение впереди; это кодирует 64, когда рассматривается как значение с прямым порядком байтов. Однако это означает не 64 байта: 64 * 8 = 512, а 64 слова, где каждое слово — 32 бита, т.е. в 4 раза больше, что дает 2048 бит.
Это означает, что модуль имеет следующее значение - в обратном порядке:
93f0d9ad49d1dc8fb2445709b6210ba5a377c52f710e1e61458e84b2c53d69a4cb2aa2c914a7669230a6a81b69fbd558f11855a7adb29753a34a95e29b37a16d
509cab68883e54c88f50583d52a9bf4522d19344af4fe67d7a6163a4e7fc9b680602a691c487c55bc0c66125eb829125a78b47111da1f4a459a5d95bf1d879af
da4e28c584b16e78ea0eb584452703b6eb8e1a4a92dcfb1cf4ad50c84a7a16ca22ccf19b0bd2ec40b7af73c8e90b5ae8d057105ce744ba0cf257203e7d4b3675
da7e3decb6a89207229cbd2839c5ccd0e26c6eb76598504de4478d883f1d68852275e2ee0296ed6f2eb6ff590005c5bcaa9f48b18437950a11d69e4373fc3f53
Если я использую ключ (просто используя модуль и общедоступную экспоненту 3), я обнаружу, что IMEISign
подпись — это подпись PKCS#1 v1.5, использующая SHA-1 в качестве хэша. К счастью для Samsung, сам IMEI, вероятно, не будет восприимчив к слабостям SHA-1 по сравнению с другими. устойчивость к столкновениям.
Однако я не могу проверить IMEI с его помощью, вероятно, из-за какой-то странной (BCD-подобной?) Кодировки номера IMEI. В любом случае, хэш SHA-1 в подписи 824ae6730ee34d365375e791aa2331d5e57c320d
если вы хотите попробовать несколько вещей.