2017-10-01 13 views
5

bir 2048 RSA anahtar çiftini oluşturmak için bir yolu özel tanımlı üs ile RSACryptoServiceProvider kullanarak, var mı?Özel bir üs boyutu ile 2048 anahtar oluştur?

new RSACryptoServiceProvider(2048); // = 65537 always 

Mesela ben 65535 için üs ayarlamak istiyor ancak sabit kodlanmış değer 65537 gibi görünüyor.

Etrafa baktım ama herhangi bir bilgi bulamadı ettik.

Ben RSACryptoServiceProvider kullanarak, varolan anahtarı içe, bir yeni anahtar çiftini oluşturmak için çalışıyorum.

ben zaten mevcut anahtar alındığında, ben modülü, üs ve diğer faktörleri tanımlayabilir biliyoruz. olası değilse

, ne alternatifler var?

+1

NIST, 65537 gerektirir: http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-78-4.pdf İyi arka planlayıcı [burada] (https://crypto.stackexchange.com/a/3113) –

+0

@HansPassant İstemcinin/sunucunun C++ 'dan C#' ye aktarılmasını ve istemcinin yalnızca 65535'i kullanıyorum, emin olmak istemediğim kamu anahtarını almak için tüm istemcilerdeki varyasyonlar güncellenecektir. – Guapo

+0

Eh, ImportParameters() anahtarıdır. Cevabın kodunda Reverse() ile çok fazla yardımcı olabileceğini unutmayın. –

cevap

0

Emin değilim Bu yardımcı olacaktır.

Sen, değişim ve daha sonra ithalat parametrelerini exprot deneyebilirsiniz. RSACryptoServiceProvider, ExportParameters ve ImportParameters yöntemlerine sahiptir.

public static class RsaCryptoServiceProviderExtension 
{ 
    public static void SetExponent(this RSACryptoServiceProvider provider, int exponent) 
    { 
     var rsaParams = provider.ExportParameters(true); 

     var expBytes = BitConverter.IsLittleEndian 
      ? BitConverter.GetBytes(exponent).Reverse() 
      : BitConverter.GetBytes(exponent); 

     rsaParams.Exponent = expBytes.Skip(1).ToArray(); 

     provider.ImportParameters(rsaParams); 
    } 
} 

ve sonra:

 var rsa = new RSACryptoServiceProvider(2048); 
     rsa.SetExponent(65535); 
     ... 
+0

"Bad Key" mesajı ile atar – Guapo

+0

@Guapo Konuda deneyimli değilim, bu yüzden burada daha fazla tavsiye alamadım, üzgünüm –

0

Sen Bouncy Castle şifreleme kütüphane kullanabilir yüzden böyle uzantısı yöntem yazmak mümkündür. Genel RSA üssünüzü ayarlamak için RsaKeyGenerationParameters ile anahtar oluşturma için RsaKeyPairGenerator sınıfını kullanın. Anahtar çifti oluşturmayla birlikte here örneğine bakın. Ancak üsün seçimi ile dikkat edin. Genel RSA üssü Fermat Number olmalıdır. Üssün seçilmesiyle ilgili daha fazla ayrıntı için Impacts of not using RSA exponent of 65537 numaralı soruya bakın.

da belgesi Using Bouncy Castle from .NET üretilmesi ile ilgili faydalı mesajları bakınız. Size kolaylık sağlamak için Bouncy Castle sertifikası oluşturabilir ve bunu .NET X509Certificate2 nesnesine dönüştürebilirsiniz.

Güncelleme:

Ben RSACryptoServiceProvider kullanarak this question örnek size yardımcı olabilir düşünüyorum.

İlgili konular