2012-06-16 4 views
3

나는 RSA 매개 변수의 M, Exponent 및 D 구성 요소를 제공 받았으며 C# .NET에서이 매개 변수를 사용하여 데이터를 암호화하려고했습니다. 나는이 컴포넌트들 중 어느 것이 데이터를 암호화하는데 필요한 공개 키의 일부로서 궁금해하고 있었습니까? 또한 지수는 기본 16에서 10001입니다. C#에서 RsaParameters.Exponent 매개 변수를 설정해야하는 이유는 무엇입니까? 그 숫자를 어떻게 해석해야하고 바이트 배열 인 Exponent에 배치해야하는지 정확히 모르겠습니다. 구성 요소가 밑면 16에 길이가 균등해야합니까?RSA 매개 변수 설정

감사합니다.

+0

. 메시지를 암호화하려면 n과 e가 필요합니다. 그들은 공개 키를 구성합니다. n은 두 개의 큰 소수의 곱이고 e는 지수입니다. 귀하의 d는 개인 키의 일부입니다. 데이터 암호를 해독하는 데 필요합니다. 실제로 M이 무엇인지에 대한 자세한 정보를 제공해주십시오. – stmax

+0

하미드는 모듈 "N"을 의미한다고 생각합니다. –

답변

2

여기에 sample of code 따라서 지수를 65537 (16 진수로 10001)의 바이트 표현으로 설정해야합니다. RSACryptoServiceProvider에서 작동하는 방법을 잘 모르겠지만 OpenSSL을 사용하는 경우 BitConverter.GetBytes(65537)은 잘못된 생각이므로 {1, 0, 1, 0}이 아니지만 {1, 0, 1}이 아니며 올바르게 작동하지 않습니다. 그래서, 나는 그것이 MSDN의 예제에서 쓴 방법으로 그것을두고하는 것이 좋습니다 생각 : 나는 당신의 M이 무엇인지 모르는

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(...) 
}