C# 如何获取publicKeyToken
时间: 2024-09-23 12:15:10 浏览: 38
在C#中,`publicKeyToken`通常用于标识应用程序的数字证书,它是一个特定于算法的值,用于区分具有相同名称的多个证书。如果你想要获取某个程序集(Assembly)的`publicKeyToken`,你可以通过以下步骤:
1. 使用`System.Reflection.Assembly`类:
```csharp
using System.Reflection;
// 获取当前编译的应用程序域下的主程序集
Assembly assembly = Assembly.GetEntryAssembly();
// 确保我们有强命名的程序集,因为非强命名程序集没有PublicKeyToken
if (assembly.IsStronglyNamed)
{
byte[] publicKeyToken = assembly.Evidence.GetPublicKeyToken();
// 公共密钥令牌作为字节数组返回
Console.WriteLine("Public Key Token: " + BitConverter.ToString(publicKeyToken));
}
else
{
Console.WriteLine("The assembly is not strongly named and doesn't have a public key token.");
}
```
2. 使用`X509Certificate2`从证书获取:
```csharp
using System.Security.Cryptography.X509Certificates;
// 如果你想从某个特定的X509证书中获取,可以这样做
X509Certificate2 certificate = ...; // 加载你的证书
byte[] publicKeyToken = certificate.PublicKey.Key.ToByteArray();
Console.WriteLine("Public Key Token: " + BitConverter.ToString(publicKeyToken));
```
请注意,不是所有程序集都有`publicKeyToken`,只有强命名的签名程序集才会包含这个信息。
阅读全文