Ответ 1
Если вы хотите использовать инструмент sn.exe
:
sn -p yourkey.snk publickey.snk
теперь существует файл publickey.snk с открытым ключом
sn -tp publickey.snk
теперь у вас есть как открытый ключ, так и токен открытого ключа.
Учитывая, что byte[]
заключает в себе файл snk, например
byte[] snk = File.ReadAllBytes("YourSnkFile.snk");
использование
byte[] publicKey = GetPublicKey(snk);
byte[] publicKeyToken = GetPublicKeyToken(publicKey);
с помощью этих методов утилиты
public static byte[] GetPublicKey(byte[] snk)
{
var snkp = new StrongNameKeyPair(snk);
byte[] publicKey = snkp.PublicKey;
return publicKey;
}
public static byte[] GetPublicKeyToken(byte[] publicKey)
{
using (var csp = new SHA1CryptoServiceProvider())
{
byte[] hash = csp.ComputeHash(publicKey);
byte[] token = new byte[8];
for (int i = 0; i < 8; i++)
{
token[i] = hash[hash.Length - i - 1];
}
return token;
}
}