Использование API BouncyCastle
http://www.bouncycastle.org/
и что-то похожее на следующее;
public AsymmetricCipherKeyPair GenerateKeys(int keySizeInBits)
{
RsaKeyPairGenerator r = new RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(),
keySizeInBits));
AsymmetricCipherKeyPair keys = r.GenerateKeyPair();
return keys;
}
Вы можете получить доступ к объекту, который будет иметь свойства. Public
и. Private
с правильно отформатированными строками.
Некоторое время назад у меня была похожая проблема, и это было лучшее решение, которое я мог найти. У меня нет точного кода, но я опубликую его, когда я приду в офис, если потребуется, но вышеприведенное должно работать.
Обновлено с кодом
Это код, который я использовал для генерации открытых / закрытых ключей.
public static AsymmetricCipherKeyPair GenerateKeys(int keySizeInBits)
{
var r = new RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(),keySizeInBits));
var keys = r.GenerateKeyPair();
return keys;
}
static void Main(string[] args)
{
var keys = GenerateKeys(2048);
var publicKey = keys.Public.ToString();
var textWriter = new StreamWriter("private.key");
var pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keys.Private);
pemWriter.Writer.Flush();
textWriter.Close();
textWriter = new StreamWriter("public.key");
pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keys.Public);
pemWriter.Writer.Flush();
textWriter.Close();
Console.ReadKey();
}