Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > совпадение хешей public ключей сборок


Автор: nmn 5.3.2010, 12:14
здравствуйте

Jeffrey Richter
Код

Contains one entry for each assembly referenced by the module. Each
entry includes the information necessary to bind to the assembly: the
assembly’s name (without path and extension), version number, culture,
and public key token (normally a small hash value generated from the
publisher’s public key, identifying the referenced assembly’s publisher).


для объявления ссылок на сборки со строгим именем используется не полный публичный ключ, а его хеш, этот хеш может совпасть для нескольких различных публичных ключей

каким образом различаются две сборки которые имеют одинаковое имя, версию, культуру, различные публичные ключи, но одинаковых хеш этих ключей?

Автор: WarHog 5.3.2010, 12:30
как я понимаю, для public key token длиной 8 байт вероятность совпадения хешей 1/(2^64).

Автор: nmn 5.3.2010, 13:24
вероятность совпадения будет 1-(hash_variants_count/key_variants_count)

пусть вероятность мала, но разве нет никакого механизма для разрешения такой проблемы? если полагаться только на вероятность зачем тогда было вводить хеш? вернее зачем было вводить ключ более 8 байт?

Автор: Ram1reS 7.3.2010, 20:48
Тот же Рихтер(3-е изд. с 71-72):
Цитата

Note, however, that the CLR never uses public key tokens when making security or trust decisions
because it is possible that several public keys could hash to a single public key token.
....
By the way, the AssemblyDef entry always stores
the full public key, not the public key token
. The full public key is necessary to ensure that the
file hasn’t been tampered with.

Автор: nmn 7.3.2010, 22:36
это да, но как быть с AsswmblyRef?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)