У меня есть мыльный веб-сервис, который требует шифрования пароля с использованием алгоритма RSA. Тем не менее, мне дали инструкции, как это сделать, но я не совсем понимаю, что именно делать.
Steps
- Выполнить хэш-пароль SHA-256
- Преобразовать BigInteger представления SHA-256 в строку на основе 16
Шифрование ключа с использованием открытого ключа со следующими параметрами
Экспонент 113621440243785421499955306133900099987164309503876199371900 61108597569919490562171044287644188919530245192244355535426664573745 это не реальная ценность, а всего лишь руководство)
Модуль 9965644084057417656330538552189694824948559788786878830575584 44367368137357168893841560814041088567854117014580575728077016098213 (это не реальная ценность, а всего лишь руководство)
* 101 ** **
Выполнить кодирование base64 пароля
Что я сделал, так это прочитал алгоритм RSA и наткнулся на некоторые рабочие примеры в Интернете, но когда я реализовал эти примеры, я продолжал получать одно и то же сообщение об ошибке, которое «не может расшифровать пароль»
$client = Yii::$app->soapApi; //the soapApi component was declared inside the main.php file
$password = 'abc12345';
$password = hash("sha256", $password);
$r = gmp_init($password, 16);
$result = gmp_strval($r);
$exponent= 'value was specified here';
$modulus= 'value was specified here';
$crypt_rsa = new \Crypt_RSA();
$crypt_rsa->loadKey(
array(
'e' => new \Math_BigInteger($exponent),
'n' => new \Math_BigInteger($modulus)
)
);
$encryptedPassword = base64_encode($crypt_rsa->encrypt($result));
$parameters = [
'username' =>'username',
'password' => $encryptedPassword,
'orgid' => 'value'
];
var_dump($client->createTokenString($parameters));die;
Я ожидал, что результат вернет элемент с сгенерированным токеном, но я не могу расшифровать пароль