Intereting Posts
PHP Curl не работает над AppEngine Безопасность скрипта PHP, встроенного или иного Вывод строки из командной строки Windows из PHP Пользовательское поле пользователя в WordPress (скрыто от пользователя) Каковы различия между «php artisan dump-autoload» и «компоновщик-автозагрузка», Как проверить, существует ли $ _GET? Конструкторы классов, расширяющих Eloquent PHP Предупреждение: mysqli_stmt :: bind_param (): Число переменных не соответствует количеству параметров в подготовленном сообщении импортировать контакты из gmail / hotmail / yahoo в php onbeforeprint () и onafterprint () эквивалент для браузеров без IE Разбор HTML-страницы с использованием curl и xpath в PHP PDO для подключения к MSSQL Over MSSQL_ * Функции wordpress 3.8.1 категория страница 2 ошибка 404 не найден / пользовательский тип сообщения Swift: как запросить внешнюю базу данных для входа в систему? Как использовать самоподписанный сертификат с XAMPP для запросов HTTPS с использованием cURL?

Шифрование RSA от C # до PHP

Мне нужно подключиться к определенному веб-сервису, который использует шифрование RSA. Используя NuSOAP и PHPseclib, я могу подключиться к серверу, чтобы получить открытый ключ, используемый для шифрования RSA, и отправить обратно данные на сервер.

Проблема возникает в том, как они шифруют данные, разработчик там дал мне документацию и образец, написанные на C #, которые трудно понять и преобразовать в PHP. Единственное, что нужно зашифровать, это пароль.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Dns.Lib.Compression; using Dns.Lib.Security.Cryptography; using ThirdPartyTest.ThirdPartyService; using SoapExtensionLib; private static string BaseServiceCall(int sysUserId, string password) { SecureMessageManager secureMessageManager = new SecureMessageManager(); ThirdPartyService.Main client = new ThirdPartyService.Main(); string dnPublicKey = client.GetPublicKey();//this is used to get the pbKey secureMessageManager.ImportThirdPartyRSAKey(dnPublicKey); string sessionId = Guid.NewGuid().ToString("N"); string tokenRequestXml = @"<request> <id>" + sysUserId + @"</id> <password>" + secureMessageManager.RSAEncryptString(password) + @"</password> <session>" + sessionId + @"</session> <public>" + secureMessageManager.ExportPublicKey() + @"</public> </request>"; string tokenResonse = client.GetSommething(tokenRequestXml); //... } 

Также что делает secureMessageManager.ExportPublicKey() ?

Вот моя версия PHP выше.

 require_once('RSA-PHPseclib0.3.5/Crypt/RSA.php'); require_once('nusoap.php'); $sysUserId = '.....'; $pass = '.....'; $sessionId = session_id(); $pubKey = "<rsakeyvalue><modulus>kdT4UUBowCepvTU3panVLnAWqKSIik8eSc5Sog0e7BOP2EoNVwer5RfxIICaWzVpJtPAQJYQ9AaW4qpp3qIw3g3DR7OTw/lvif6y5VemiRue6u4T2eef4AG3Ka0MoMhTtMxIRXGNqx6hPyPn40F9ZMFwprFupFl0Z2LPRLR3Fek=</modulus><exponent>AQAB</exponent></rsakeyvalue>";//The Public key received from an other program $rsa = new Crypt_RSA(); $return = $rsa->loadKey($pubKey); $password = base64_encode($rsa->encrypt($pass)); $inputData = "<request><id>$sysUserId</id><password>$password</password><session>$sessionId</session><public>$pubKey</public></request>"; $params = array('inputData'=>$inputData); $result = $client->call('GetSommething', $params, $namespaces, '', '',null,'document','literal'); 

Ошибка, которую я получаю от их сервера, – 'Server was unable to process request. ---> Error occurred while decoding OAEP padding.' 'Server was unable to process request. ---> Error occurred while decoding OAEP padding.' , Я понял, что это связано с тем, как я шифрую пароль. Проведя более 40 часов удара кирпичной стены, не уверен, что делать.