2011-12-19 3 views
0

Java (RSA/ECB/PKCS1Padding)의 일부 암호 클래스와 우리가 먼저 교환 한 공개 키를 사용하여 암호화 된 문자열이 있습니다.RSA/ECB/PKCS1Padding을 사용하여 Java에서 암호화 할 수 없습니다. NET에서 해독 할 수 없습니다.

개인 키를 사용하여 해당 문자열의 암호를 해독하고 싶습니다.이 코드는 제가 가지고있는 코드입니다.

X509Certificate2 cert = new X509Certificate2("c:\\test.pfx", "test"); 
     string s =    "very long encrypted data"; 

     RSACryptoServiceProvider privateKeyProvider = (RSACryptoServiceProvider)cert.PrivateKey; 

     string decryptedTest = System.Text.Encoding.UTF8.GetString(privateKeyProvider.Decrypt(Convert.FromBase64String(s), true)); 

오류 메시지와 함께 예외가 발생합니다.

: 내가 잘못되었는지 무엇

"System.Security.Cryptography.CryptographicException OAEP 패딩을 디코딩하는 동안 오류가 발생했습니다"?

+0

어떤 라인에서 예외가 있습니까? – gdoron

답변

0

두 번째 매개 변수를 false으로 설정하여 Decrypt으로 호출하십시오. MSDN

... PKCS # 1 v1.5 패딩을 사용하는 경우 false입니다.

+0

나는 그것을 알아 냈다. 그러나 나는 당신에게 신용을 줄 것이다. 시간 내 주셔서 감사합니다. –

+0

당신은 환영합니다 :) – kol

0

이것은 작동 코드입니다.

X509Certificate2 cert = new X509Certificate2("c:\\test.pfx", "test"); 
    string s =    "very long encrypted data"; 

    RSACryptoServiceProvider privateKeyProvider = (RSACryptoServiceProvider)cert.PrivateKey; 

    string decryptedTest = System.Text.Encoding.UTF8.GetString(privateKeyProvider.Decrypt(Convert.FromBase64String(s), true)); 
관련 문제