Yii2 RSA шифрование с использованием модуля и экспоненты - PullRequest
1 голос
/ 26 июня 2019

У меня есть мыльный веб-сервис, который требует шифрования пароля с использованием алгоритма RSA. Тем не менее, мне дали инструкции, как это сделать, но я не совсем понимаю, что именно делать.

Steps

  1. Выполнить хэш-пароль SHA-256
  2. Преобразовать BigInteger представления SHA-256 в строку на основе 16
  3. Шифрование ключа с использованием открытого ключа со следующими параметрами

    Экспонент 113621440243785421499955306133900099987164309503876199371900 61108597569919490562171044287644188919530245192244355535426664573745 это не реальная ценность, а всего лишь руководство)

    Модуль 9965644084057417656330538552189694824948559788786878830575584 44367368137357168893841560814041088567854117014580575728077016098213 (это не реальная ценность, а всего лишь руководство)

    * 101 ** **
  4. Выполнить кодирование 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;

Я ожидал, что результат вернет элемент с сгенерированным токеном, но я не могу расшифровать пароль

...