Próbuję utworzyć aplikację bazy danych online przy użyciu PHP dla serwera i aplikacji formularza C# dla klienta. Na serwerze zaszyfrowuję prosty ciąg przy użyciu publicznego klucza RSA z PHPSecLib. Następnie aplikacja C# odbiera ciąg znaków i próbuje go odszyfrować, używając odpowiedniego klucza prywatnego. Bajty są kodowane base64 na serwerze i ponownie dekodowane do bajtów przez C#. Stworzyłem parę kluczy za pomocą PHPSecLib.System.IO.IOException: ----- KEY PRYWATNY KOŃCOWEGO RSA nie został znaleziony
Jest to kod używam w aplikacji klienckiej:
public string rsa_decrypt(string encryptedText, string privateKey) {
byte[] bytesToDecrypt = Convert.FromBase64String(encryptedText);
Pkcs1Encoding decrypter = new Pkcs1Encoding(new RsaEngine());
//the error occurs on this line:
AsymmetricCipherKeyPair RSAParams = (AsymmetricCipherKeyPair)new PemReader(new StringReader(privateKey)).ReadObject();
decrypter.Init(false, RSAParams.Private);
byte[] decryptedBytes = decrypter.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length);
string decryptedString = Convert.ToBase64String(decryptedBytes);
return decryptedString;
}
Ale pojawia się następujący błąd na linii określonej powyżej ^.
nieobsługiwany wyjątek typu 'System.IO.IOException' w module BouncyCastle.Crypto.dll
dodatkowe ----- END RSA Klucz prywatny znaleziono
Uważam, że nie ma nic złego w połączeniu z parą kluczy, ponieważ dostaję błąd, zanim spróbuję odszyfrować wszystko. Parametr privateKey
obecnie sztywno do skryptu za pomocą tego formatu:
string privateKey = "-----BEGIN RSA PRIVATE KEY-----XXXXXXXX-----END RSA PRIVATE KEY-----";
Więc wydaje mi się, że stopka rzeczywiście znajduje się w ciągu ... Mam debugowany google i wszędzie, ale nie wydaje się rozwiązać. Jestem całkiem nowy w RSA & Bouncycastle, więc może używam niewłaściwych metod.
Mam nadzieję, że możesz pomóc, dzięki! - G4A
P.S. To jest moje pierwsze pytanie dotyczące Stackoverflow, właśnie utworzyłem konto, więc jeśli mógłbyś podać mi trochę informacji na temat sposobu, w jaki sformułowałem to pytanie; wspaniały!
IIRC potrzebujesz linii między granicą pre-eb; '" ----- BEGIN KLUCZ PRYWATNY RSA ----- \ r \ nXXXXXXXX \ r \ n ----- KONTO PRYWATNE KOŃCOWEGO KONIEC RSA ----- "' –
Witamy w SO, G4A! Nie ma wiele problemów z pytaniem, dobre pytanie, doskonałe formatowanie. Cztery rzeczy do dalszego ulepszenia: 1) zakończ z rzeczywistym pytaniem (wiesz, czymś, co kończy się znakiem zapytania) 2) "Nadzieja, że możesz pomóc, dzięki! -4GA" nie jest wymagana, a właściwie nie jest preferowana 3) PS powinien być komentarzem poniżej pytania i 4) proszę, spróbuj i humoru nam, odpowiadając na przykład AlexK. kiedy proponuje rozwiązanie (którego nie jest pewien, stąd komentarz zamiast odpowiedzi). –
To zrobiło sztuczkę @AlexK.! Właściwie to już próbowałem, ale zapomniałem powrotu karetki. Czy mógłbyś skasować swój komentarz i zrobić z niego odpowiedź, aby dać ci karmę, czy jakkolwiek to się nazywa. I dziękuję @Maarten Bodewes, że to zapamiętam. I wreszcie, przepraszam za późną odpowiedź; Domyślam się, że mój e-mail nie jest jeszcze poprawnie skonfigurowany. – G4A