生成公钥 - 私钥对并在asp.net的文本框中显示它们

use*_*303 5 c# asp.net rsacryptoserviceprovider

任何机构可以解释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);
Run Code Online (Sandbox Code Playgroud)

他们给出了公钥是{e,n},其中n =(P*Q)私钥的结果是{d,n},其中n =(P*Q)的结果

我所做的是公钥和私钥的示例代码中是否正确

非常感谢

Chr*_*int 10

使用BouncyCastle API

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;
}
Run Code Online (Sandbox Code Playgroud)

您可以访问将拥有的对象.Public和.Private具有正确格式化字符串的属性.

我不久前有一个类似的问题,这是我能找到的最好的解决方案.我没有确切的代码可以提供,但是如果需要的话我会在办公室发布,但上述情况应该有效.

更新了代码

这是我用来生成公钥/私钥的代码.

  using Org.BouncyCastle.Crypto;
  using Org.BouncyCastle.Crypto.Generators;
  using Org.BouncyCastle.Security;

  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();


}
Run Code Online (Sandbox Code Playgroud)

  • 当我查看var“ publicKey”时,会看到“ Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters”。这是预期的吗? (2认同)