1. ホーム
  2. .net

[解決済み] .snkは何のためにあるのですか?

2022-04-25 07:19:38

質問事項

.snkは何のためのファイルですか? 私はそれが以下の略であることを知っています。 Strongly Named Key (強く命名されたキー) しかし、それが何であるか、どのように機能するかについてのすべての説明は私の頭を越えています。

強名前キーがどのように使用され、どのように機能するかについて、簡単な説明はありますか?

どのように解決するのですか?

.snkファイルを用いて .NETアセンブリに強い名前 このような強力な名前は、以下のように構成されています。

シンプルなテキスト名、バージョン番号。 とカルチャ情報(もしあれば 公開鍵と デジタル署名

SNKには、一意のキーペア(秘密鍵および公開鍵)が含まれており、これを使用することで、アセンブリに一意の強い名前を付けることができます。アセンブリに強い名前が付けられると、アセンブリの内容から "ハッシュ" が構築され、そのハッシュが秘密鍵で暗号化されます。そして、この署名されたハッシュは .snk の公開鍵とともにアセンブリに配置されます。

後日、誰かがstrong-namedアセンブリの完全性を確認する必要があるとき。 彼ら アセンブリの内容のハッシュを構築し、アセンブリの公開鍵を使ってアセンブリに付属するハッシュを復号化します。2つのハッシュが一致すれば、アセンブリの検証は成功です。

このようにアセンブリを検証できることは、アプリケーション全体を破壊するような悪意のあるアセンブリとすり替える人がいないことを保証するために重要である。このため、非強制名アセンブリは、強 制名アセンブリと同じようには信頼されず、GACに配置することができないのです。また、信頼の連鎖があります。強く名前を付けられたアセンブリを生成して、強く名前を付けられていないアセンブリを参照することはできません。

記事の"です。 ストロングネーミングの秘密 (archived at Wayback Machine) をご覧ください。これらの概念をより詳細に説明する素晴らしい仕事です。写真付き。