我有一个使用 Castle Windsor 来实现插件机制的 exe。我需要验证我加载的插件是否来自我(并且不是一些恶意代码)。
我相信我需要使用非对称密钥(可能是 SNK?)对 exe 和 dll 进行签名。首先这是正确的,我该怎么做?其次,如何在 exe 中以编程方式验证 dll 来自受信任的来源?
我有一个使用 Castle Windsor 来实现插件机制的 exe。我需要验证我加载的插件是否来自我(并且不是一些恶意代码)。
我相信我需要使用非对称密钥(可能是 SNK?)对 exe 和 dll 进行签名。首先这是正确的,我该怎么做?其次,如何在 exe 中以编程方式验证 dll 来自受信任的来源?
如果您签署您的 DLL,那么在运行时您可以StrongName
在加载它之前检查 DLL 的。
您还可以检查用于签名的公钥是否是您所期望的。
要获取程序集的公钥,您可以执行以下操作:
Assembly assembly = ...
AssemblyName assemblyName = assembly.GetName();
byte[] publicKey = assemblyName.GetPublicKey();
我刚刚检查过,这里的 StackOverflow 上已经有一个很好的答案: