Intereting Posts
Есть ли какая-либо известная ошибка в библиотеке сеансов CodeIgniter 2.1.0? Почему меня выгоняют? Создание php-файла с контентом из терминала PHP Загрузка файлов – проверка только изображений SQL Select Присоединиться к лимиту в Laravel / PHP Zend Framework 2 – AJAX Запрос с другого сервера Почему хелперы Form и HTML устарели в Laravel 5.x Предупреждение: mysql_query () ожидает, что параметр 1 будет строкой, PHP foreach loop для заполнения выпадающего списка со значениями из массива массивов Запрос Curl, показывающий различный контент по сравнению с запросом браузера Хорошая практика для создания уникальных идентификаторов уникальных идентификаторов человека Количество повторов подписчиков Twitter PHP MYSQLI подготовил вход в систему и проверил статус пользователя Вход API API Salesforce Как обновить часовой пояс для временных меток (created_at и updated_at), которыми управляет Laravel Eloquent? PHP: вызов неопределенной функции gzdecode ()

Как расшифровать строку с помощью OpenSSL, которая ранее была зашифрована с помощью mcrypt?

Поскольку mcrypt устарел в PHP 7.1, и у меня много данных, зашифрованных / дешифрованных с помощью mcrypt в существующем проекте, как перенести мой PHP-код из mcrypt в OpenSSL? У меня есть следующий код для шифрования:

$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 'salt', 'source string', MCRYPT_MODE_ECB)); 

И код дешифрования:

 $source = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 'salt', base64_decode('encoded string'), MCRYPT_MODE_ECB); 

Какие функции openssl_ следует использовать в приведенных выше примерах для получения одинаковых результатов без преобразования кодированных данных?

Или единственный способ запустить скрипт, который расшифрует все мои сохраненные зашифрованные данные с помощью mcrypt и закодирует с помощью openssl?

благодаря

OpenSSL не имеет шифрования Rijndael-256; нет эквивалента – вам придется расшифровывать и повторно шифровать все.

Но также:

  • Вам не хватает дополнения и аутентификации.
  • Не используйте режим ECB.
  • «соль» не является надлежащим ключом шифрования и не является регулярной строкой. Используйте random_bytes () для генерации ваших ключей с соответствующей длиной ключа для выбранного алгоритма .

Все вышеперечисленное можно суммировать следующим образом: не делайте этого самостоятельно, используйте хорошо проверенную библиотеку, такую ​​как defuse / php-encryption .

Криптография – не простая вещь, и вы не можете сделать это правильно всего за 5 строк кода.