Как говорится в заголовке, кто-нибудь знает, как извлечь закрытый ключ из файла snk? Мы хотим использовать закрытый ключ из StrongName для целей шифрования. Я прочитал:
http://msdn.microsoft.com/en-us/library/k5b5tt23(VS.80).aspx, что sn -o key.snk извлечет как закрытый, так и открытый ключ, если они существуют в файле, но я попробовал, и это просто длинная строка в формате CSV без различия между закрытым ключом и открытым ключом.
Извлечение закрытого ключа из файла строгого имени?
Ответы (1)
В документе, на который вы ссылаетесь, рядом с флагом -o написано:
Если входящий файл содержит пару ключей с закрытым ключом, закрытый ключ также извлекается.
Вы уверены, что в файле есть закрытый ключ?
Вы можете запустить sn -p key.snk
, чтобы получить открытый ключ, и сравнить его с выводом sn -o key.snk
- если они одинаковы, файл ключа имеет только открытый ключ, если нет, разница заключается в закрытом ключе.
person
Oded
schedule
05.08.2010
да, просто создал его следующим образом: sn -k key.snk. Файлы со строгими именами всегда имеют комбинацию открытого и закрытого ключей, иначе они не будут работать для подписи сборок.
- person coding4fun; 05.08.2010
@ user127954 - затем извлеките только открытый ключ и сравните. Смотрите обновленный ответ.
- person Oded; 05.08.2010
Хотя, возможно, это будет больно, потому что опция -o возвращает массив байтов, а -p возвращает строку тарабарщины :). Ну, я думаю, это не так сложно, но мне придется создать программу, чтобы прочитать ее и преобразовать в массив байтов. Я удивлен, что нет документированного способа вернуть закрытый ключ.
- person coding4fun; 05.08.2010
@ user127954 - Вероятно, потому что он должен быть приватным. Вы должны помнить, что вы использовали при создании файла ключа...
- person Oded; 05.08.2010
Да, я полностью это понимаю, но есть и другие форматы для пар открытого/закрытого ключей. Например, pfx вы можете легко извлечь закрытый ключ. Говорить, что вы не можете извлечь закрытый ключ, потому что это закрытый ключ, на самом деле не имеет смысла. Если у кого-то есть ваш файл snk, все надежды потеряны, и они могут легко подписать свой собственный код и заменить одну из ваших сборок, и ваша программа никогда не узнает ее мошеннический код. Черт возьми, может быть, я просто закончу тем, что хеширую файл snk, использую его в качестве ключа и на этом закончу.
- person coding4fun; 05.08.2010