2017-03-06 91 views
0

我已經使用RNGCryptoServiceProvider生成了隨機數,下一個要求是生成可用於加密/解密目的的私有的公共RSA密鑰對。c#如何使用PRNG生成的隨機數生成RSA密鑰對

如何使用該隨機數構造RSAParameters對象,因爲可以導入RSA參數以創建最終用於加密原始數據的RSACryptoServiceProvider對象。

+0

並不是所有的隨機數是很好的RSA密鑰轉換的隨機數公/私鑰對...如果我沒有記錯的話,它們必須是素數(或者是半素數)......例如,在這裏描述一個「查找」一個鍵的算法:http://crypto.stackexchange.com/a/1971 – xanatos

+0

爲什麼你在滾動你自己? DiY安全總是以淚水結束...... –

+0

@HenkHolterman我必須從客戶端定製需求...我只是將各種方法(如哈希,加密,爲客戶簽名數據)結合在一起...您是否建議使用這些庫任務 –

回答

0

這是我如何使用BouncyCastlelink

byte[] btRandomNumber = new byte[1000000]; 
     using (RNGCryptoServiceProvider r = new RNGCryptoServiceProvider()) 
     { 
      r.GetBytes(btRandomNumber); 
     } 

int RsaKeySize = 1024; 

     Org.BouncyCastle.Security.SecureRandom secureRandom = new Org.BouncyCastle.Security.SecureRandom(btRandomNumber); 
     var keyGenerationParameters = new Org.BouncyCastle.Crypto.KeyGenerationParameters(secureRandom, RsaKeySize); 
     var keyPairGenerator = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator(); 
     keyPairGenerator.Init(keyGenerationParameters); 
     Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair = keyPairGenerator.GenerateKeyPair(); 

歡迎任何更正或一些其他的方式來做到這一點