Извлечь открытый ключ из закрытого ключа в C#

Я использовал sn.exe генерировать пару ключей (закрытый и открытый ключ). Я извлекаю открытый ключ из закрытого ключа следующим образом:

sn -p keyPair.snk publicKey.snk

Я читаю его с помощью C# и сохраняю его в базе данных как двоичный файл для шифрования моих данных.

Есть ли способ извлечь открытый ключ из закрытого ключа в C# без использования sn.exe?

ПРИМЕЧАНИЕ: я хочу открытый ключ как byte сравнить его с тем, что я храню в своей базе данных.

1 ответ

Есть ли способ извлечь открытый ключ из закрытого ключа в C# без использования sn.exe?

Удивительно сложно это сделать, но это возможно; Я так и сделал.

Что вам нужно сделать, это p/invoke для StrongNameGetPublicKey в mscorwks.dll.

Я читаю его с помощью C# и сохраняю его в базе данных как двоичный файл, чтобы использовать для шифрования моих данных

Это очень плохая идея. Цель открытого ключа со строгим именем - не шифровать ваши данные! Цель открытого ключа со строгим именем состоит в том, чтобы ваши клиенты убедились, что сборка, которую вы им дали, была написана вами. Если вы используете открытый ключ для чего-либо, кроме этой задачи, вы делаете что-то очень, очень неправильно, и вам следует немедленно прекратить это делать.

Сильные имена используют шифрование, но они не являются технологией шифрования; они представляют собой технологию создания доказательств для оценки политики безопасности доступа к коду.

Другие вопросы по тегам