我正在为可能遇到不同指数大小的软件创建单元测试。 (see section 3.3.1 of this RFC)RSA公开指数默认为65537.该值应该是多少?我的选择有什么影响?
如何使用充气城堡,或任何其他C#库生成RSA密钥对that doesn't have a key size of 65537.
如果答案是,我可以直接修改这个,只要我更新私钥那么,我应该为公钥和私钥做出什么样的具体变化(或重新计算)呢?
下面是我使用创建的65537指数的关键示例代码:
// Create key
RsaKeyPairGenerator generator = new RsaKeyPairGenerator();
var param = new KeyGenerationParameters(new SecureRandom(), 1024);
generator.Init(param);
AsymmetricCipherKeyPair keyPair= generator.GenerateKeyPair();
// Save to export format
SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);
byte[] ret = info.GetEncoded();
string ovalue1 = Convert.ToBase64String(ret);
// Read from export format
byte[] publicKeyBytes = Convert.FromBase64String(ovalue1);
AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(publicKeyBytes);
RsaKeyParameters rsaKeyParameters = (RsaKeyParameters)asymmetricKeyParameter;
RSAParameters rsaParameters = new RSAParameters();
rsaParameters.Modulus = rsaKeyParameters.Modulus.ToByteArray();
rsaParameters.Exponent = rsaKeyParameters.Exponent.ToByteArray();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParameters);
'KeyGenerationParameters'有一个子类'RSAKeyGenerationParameters',它可以用公共指数实例化。 –
@BrettHale - 为我解决了它!如果你想要这个答案的代表,请随时张贴.. – LamonteCristo