Важный вопрос: почему base64 ?
Если это для вашего собственного приложения, то вы можете сохранить закрытый ключ в виде строки XML (намного проще: -).
string xml = x509Certificate2.PrivateKey.ToXmlString (true);
Если вы хотите base64 (опять же только для вашего приложения) вы можете экспортировать ключ (RSAParameters), затем выполнять конкататацию каждые byte[]
и преобразовывать объединенный вывод в строку base64.
Но если вы хотите взаимодействовать с другими приложениями, требующими base64 закрытый ключ, тогда вам нужно знать формат (внутри строки base64 ).Например, во многих случаях закрытые ключи кодируются PEM (это base64 со специальным верхним / нижним колонтитулом, см. пример для X509Certificate
).
Если это то, чтозатем вы должны сначала закодировать закрытый ключ в структуре PKCS # 8 , затем включить base64 и добавить верхний / нижний колонтитулы.Вы можете найти полезный код для этого внутри Mono.Security.dll (лицензионный код MIT.X11 из проекта Mono).