2012-06-16 47 views
3

我已經提供了M,Exponent和D組件以及RSA參數,並試圖在C#.NET中使用它進行加密。我在想知道哪些組件需要加密數據?另外,基數爲16的指數爲10001.我應該在C#中設置RsaParameters.Exponent參數?我不知道我應該如何解釋這個數字,並將它放在一個字節數組的Exponent中。基礎16中的組件不需要有均勻的長度嗎?設置RSA參數

謝謝。

+0

我不知道你的M是什麼。你需要n和e來加密消息。他們構成了公鑰。 n是兩個大素數的乘積,e是指數。你的d是私鑰的一部分。你需要它來解密數據。請提供更多關於M實際是什麼的信息。 – stmax

+0

我認爲哈米德的意思是「N」,模數。 –

回答

2

這裏是一個sample of code 所以,你應該設置指數作爲數字65537(10001在基地16)的字節表示。 我不太確定它是如何在RSACryptoServiceProvider中工作的,但是如果您使用的是OpenSSL,BitConverter.GetBytes(65537)是一個壞主意,因爲它是{1, 0, 1, 0},但不是{1, 0, 1},它不能正常工作。所以,我認爲這是更好地留在某種程度上,它在MSDN的例子中寫道:

byte[] Exponent = {1,0,1}; 
3
RSAParameters rsaKeyInfo = new RSAParameters 
{ 
    Exponent = new byte[] {1, 0, 1}, 
    ... 
}; 

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) 
{ 
    rsa.ImportParameters(rsaKeyInfo); 
    rsa.Decrypt(...) 
}