2010-06-20 2 views
1

RSACryptoServiceProvider를 사용하여 암호 해독하려고하지만 modulus 및 d 쌍이 개인 키와 지수로만 있습니다.D, 지수 및 모듈러스 만 사용하는 RSA 암호 해독

RsaParameters 구조체는 이와 관련이 없습니다. 그것은 "잘못된 키"예외로 해독시 나를 거부합니다.

제 생각에이 쌍은 전체 DQ DP INVERSEQ 부품 없이는 해독하기에 충분합니다. 이상, pyCrypto를 사용하여 python에서 찾은 예제에서 위의 부분 만 사용하는 RSA.construct 메서드가 있습니다.

.NET Framework 또는 다른 라이브러리의 클래스를 사용하는 것이 가능합니까? BountyCastle을 사용해 보았지만 운이 없었습니다.

답변

0

.NET 프레임 워크를 사용할 수 없다면 필자는 RSA 암호화 변환을 수동으로 수행하는 C++ (약간의 노력으로 C#으로 변환 할 수있는 프로그램)을 작성하고 소스 코드는 p와 q를 제공하지 않고 개인 키 (d)를 사용하여 작동해야하는 것처럼 보입니다. 그것은 http://sourceforge.net/projects/bmrsa/

1

은 그냥 약간의 수학에서의,

k = c^d mod N 

k는 plaintextmessage
C는 시프레
d는 개인 키
N이 당신의 계수입니다입니다)


자바에서는 다음과 같습니다.

BigInteger c = ... 
BigInteger d = ... 
BigInteger n = ... 
BigInteger k = c.modPow(d, n); 

나는 C#이 동일한 것을 가지고 있기를 바랍니다.

1

정보가 있으면 누락 된 모든 정보를 복구 한 다음 RSACryptServiceProvider에 원하는 모든 매개 변수를 제공 할 수 있습니다. 시작하기 위해 필요한 알고리즘은 here입니다. 섹션 8.2.2 (i), "인수 분해와의 관계"를보십시오. "다른 한편으로"시작하는 세 번째 단락은 소수 p와 q를 복구하는 데 사용할 수있는 간단한 알고리즘을 개략적으로 설명합니다. 이것들로부터 다른 값들을 쉽게 복구 할 수 있습니다. 합리적인 BigInteger 패키지가 필요합니다.