c#如何从使用PRNG生成的随机数生成RSA密钥对

c#如何从使用PRNG生成的随机数生成RSA密钥对,c#,rsacryptoserviceprovider,rngcryptoserviceprovider,C#,Rsacryptoserviceprovider,Rngcryptoserviceprovider,我已经使用RNGCryptoServiceProvider生成了随机数,下一个要求是生成一个私有的、公共的RSA密钥对,用于加密/解密目的 如何使用该随机数构造rsapameters对象,因为可以导入RSA参数来创建rsacryptserviceprovider对象,该对象最终将用于加密原始数据。这就是我使用BouncyCastlelink将随机数转换为私钥/公钥对的方式 byte[] btRandomNumber = new byte[1000000]; using (RNGC

我已经使用RNGCryptoServiceProvider生成了随机数,下一个要求是生成一个私有的、公共的RSA密钥对,用于加密/解密目的


如何使用该随机数构造rsapameters对象,因为可以导入RSA参数来创建rsacryptserviceprovider对象,该对象最终将用于加密原始数据。

这就是我使用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密钥。。。它们必须是素数(或者半素数,如果我没记错的话)。。。例如,这里描述了一个“查找”密钥的算法:为什么要滚动自己的密钥?DiY安全性总是以眼泪告终…@Henkholtman我必须定制客户的要求…我只是在为客户组合各种方法,如散列、加密、数据签名…您是否建议使用这些方法的库tasks@SamarthSrivastava不,他建议如果你必须创建一个键,您只需
新建RSACryptoServiceProvider(keySizeInBits)
,并将工作交给它。如果要求您建造水坝,但您没有能力建造水坝,则不应建造水坝。人可能会死。