我正在爲可能遇到不同指數大小的軟件創建單元測試。 (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