Перепишите правильный шифр RIJNDAEL-256 на PHP.

льку Mcrypt устарел, я хочу использовать вместо этого OpenSSL в своем коде, так как мы уже используем php 7.2.4 на нашем сервере.

Я использовал следующий код для шифрования / дешифрования.

// ENCRYPTION

function encrypt($text, $salt='') {
        if ($text == "") return "";
        if ($salt == "") $salt = 'DiAo74dOO09T48YESmuvbS0T';
        return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv   

(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
    }

// РАСШИФРОВЫВАНИЕ

function decrypt($text, $salt = '') {
        if ($text == "")
            return "";
        if ($salt == "")
            $salt = 'DiAo74dOO09T48YESmuvbS0T';
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv

(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }

"AFdT9sa81krHkp / GoYCSwh7 / lZn / gLZLHJSldi5 / QCU =" Эта строка была зашифрована с использованием вышеуказанной функции шифрования, но я хочу, чтобы она расшифровывалась с использованием OPENSSL. Я использовал следующий код, чтобы расшифровать его.

    $string = 'AFdT9sa81krHkp/GoYCSwh7/lZn/gLZLHJSldi5/QCU=';   
    $output = false;
    $secret_key = 'DiAo74dOO09T48YESmuvbS0T';   
    $secret_iv1 = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-ECB'));
    $secret_iv = bin2hex($secret_iv1);
    $key = hash('sha256', $secret_key);    
    $iv = substr(hash('sha256', $secret_iv), 0, 16);

    $output = base64_encode(openssl_encrypt($string, 'aes-256-ecb', $key, OPENSSL_RAW_DATA));

Я хочу расшифровать вывод как: "durhs-14767-w0163j1-89047" Заранее спасибо за ваш ответ.

Ответы на вопрос(1)

Ваш ответ на вопрос