Расшифруйте данные в php 7.2, который зашифрован в php 5.6 с использованием AES - PullRequest
0 голосов
/ 07 марта 2019

Я использовал следующий метод для шифрования и дешифрования данных между php-приложением и android-приложением. В php 5.6 он работал нормально. После обновления до php 7.2 он перестал работать. Теперь я временно вернулся к php 5.6.Я знаю, что php Mcrypt устарелаТеперь моя проблема в том, что я не могу дать обновление для Android App, я должен как-то исправить это на стороне сервера, у меня есть предопределенные key и iv , как на стороне сервера, так и в приложенииЧто мне делать, чтобы я мог использовать тот же ключ и IV и шифровать и дешифровать данные на стороне сервера в php 7.2.Заранее спасибо

 class MCrypt
        {
                private $key = 'Some Key'; 
                private $iv = 'Some IV'; 


                function __construct()
                {
                }

                function encrypt($str) {

                  //$key = $this->hex2bin($key);    
                  $iv = $this->iv;

                  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

                  mcrypt_generic_init($td, $this->key, $iv);
                  $encrypted = mcrypt_generic($td, $str);

                  mcrypt_generic_deinit($td);
                  mcrypt_module_close($td);

                  return bin2hex($encrypted);
                }

                function decrypt($code) {
                  //$key = $this->hex2bin($key);
                  $code = $this->hex2bin($code);
                  $iv = $this->iv;

                  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

                  mcrypt_generic_init($td, $this->key, $iv);
                  $decrypted = mdecrypt_generic($td, $code);

                  mcrypt_generic_deinit($td);
                  mcrypt_module_close($td);

                  return utf8_encode(trim($decrypted));
                }

                protected function hex2bin($hexdata) {
                  $bindata = '';

                  for ($i = 0; $i < strlen($hexdata); $i += 2) {
                        $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
                  }

                  return $bindata;
                }

        }

1 Ответ

0 голосов
/ 07 марта 2019

mcrypt устарела в версии 7.2 и не включена по умолчанию. Тем не менее, вы все равно можете установить mcrypt вручную, если хотите. Вы также можете использовать openssl_encrypt () и openssl_decrypt ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...