Используя этот код для получения открытого ключа байт ...Какова структура открытого ключа подписанной сборки в C#?
var pubKey =
AppDomain.CurrentDomain.DomainManager.EntryAssembly
.GetName().GetPublicKey();
Что это общая структура в начале (первый 32 байт) из ключа? Это не ASN.1, и это может быть не переменным. Я могу сделать это и получить повторы.
// 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31
Все ли это наоборот или только часть его (например, модуль в конце)? 52 53 41 31
- это строка RSA1
. Модуль моего ключа - 1024 бит, поэтому я искал что-то, что описывало длину. 0x0400
(00 04
B.E.) будет 1024 (бит), 0x80
будет 128 (байты, 1024/8).
// 00 04 00 00 01 00 01 00
Являются ли эти последние 4-6 общественным экспонентом? Большой или маленький конец? Является ли последний null терминатором или спейсером?
Расследования в реализациях (.NET и Mono) от RSAPKCS1SignatureFormatter
и RSAPKCS1SignatureDeformatter
нелегко.
Удалены изменения, отвечая на собственный вопрос ... если кто-то не придумает лучшего ответа или не добавит детали, включая whys.
Еще одно предостережение ... PubExp должен быть преобразован в байты и опущен нулевой байт (обрезать верхние 0 байтов, например 01 00 01 00 -> 01 00 01 -> AQAB, а не AQABAA ==). – TylerY86