0
我已經使用RNGCryptoServiceProvider生成了隨機數,下一個要求是生成可用於加密/解密目的的私有的公共RSA密鑰對。c#如何使用PRNG生成的隨機數生成RSA密鑰對
如何使用該隨機數構造RSAParameters對象,因爲可以導入RSA參數以創建最終用於加密原始數據的RSACryptoServiceProvider對象。
我已經使用RNGCryptoServiceProvider生成了隨機數,下一個要求是生成可用於加密/解密目的的私有的公共RSA密鑰對。c#如何使用PRNG生成的隨機數生成RSA密鑰對
如何使用該隨機數構造RSAParameters對象,因爲可以導入RSA參數以創建最終用於加密原始數據的RSACryptoServiceProvider對象。
這是我如何使用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();
歡迎任何更正或一些其他的方式來做到這一點
並不是所有的隨機數是很好的RSA密鑰轉換的隨機數公/私鑰對...如果我沒有記錯的話,它們必須是素數(或者是半素數)......例如,在這裏描述一個「查找」一個鍵的算法:http://crypto.stackexchange.com/a/1971 – xanatos
爲什麼你在滾動你自己? DiY安全總是以淚水結束...... –
@HenkHolterman我必須從客戶端定製需求...我只是將各種方法(如哈希,加密,爲客戶簽名數據)結合在一起...您是否建議使用這些庫任務 –