У меня есть сборка .NET, которую я подписываю. Вот мое понимание процесса и связанного с ним вопроса.
Для подписи сборки компилятор выполняет одностороннее хеширование сборки, а затем шифрует хеш с помощью закрытого ключа издателя. Теперь это зашифрованное значение хэша нужно где-то хранить. Когда я подписываю сборку и запускаю ILDasm для просмотра IL сборки, я вижу раздел открытого ключа, но не вижу, где этот хэш хранится внутри сборки.
Из того, что я прочитал, когда среда выполнения загружает эту подписанную сборку, она выполняет обратный процесс, который включает в себя генерацию хэша сборки и расшифровку «подписи строгого имени». Эта расшифрованная подпись строгого имени сравнивается с хешем из шага 1. Если эти два совпадают, среда выполнения загружает ее, в противном случае отказывается загружать сборку. Я не уверен, что именно зашифрована «подпись строгого имени», и опять же, где ее найти.
TIA