Сгенерируйте пару открытый-закрытый ключ и покажите их в текстовом поле в asp.net. - PullRequest
5 голосов
/ 30 июня 2011

любое тело может объяснить параметры RSAParameters. Я видел такие параметры, как p, d, e, q, ... мне нужен закрытый ключ и открытый ключ от него

я получил ссылку

http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters%28v=vs.90%29.aspx[^]

Я использую пример кода, как это может кто угодно может сказать, что это был правильный или нет пример кода:

  //Generate a public/private key pair.
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            //Save the public key information to an RSAParameters structure.
            RSAParameters RSAKeyInfo = RSA.ExportParameters(true);
            //public key    
            TextBox5.Text = Convert.ToBase64String(RSAKeyInfo.Exponent);
            // private key  
            TextBox6.Text = Convert.ToBase64String(RSAKeyInfo.D);

они дали как открытый ключe, n}, где n = результат (P * Q) закрытого ключа равен {d, n}, где n = результат (P * Q)

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

большое спасибо

1 Ответ

10 голосов
/ 30 июня 2011

Использование 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();


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...