передать mcrypt_encrypt в openssl_encrypt - PullRequest
0 голосов
/ 25 октября 2019

Я получил другой результат, когда попытался переместить функцию mcrypt_encrypt openssl_encrypt в AES.

function encrypt3($data, $secret){
        //Generate a key from a hash
        $key = md5(utf8_encode($secret), true);

        //Pad for PKCS7
        $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $len = strlen($data);
        $pad = $blockSize - ($len % $blockSize);
        $data .= str_repeat(chr($pad), $pad);

        //Encrypt data MCRYPT_RIJNDAEL_128, ECB equal to C# AES
        $encData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);

        return base64_encode($encData);
    }


function en_test($data,$cipher_method,$secret_key,$iv){
    $secret_key = md5(utf8_encode($secret_key), true);

    $result = openssl_encrypt($data, $cipher_method, $secret_key, OPENSSL_RAW_DATA, 0);
    return base64_encode($result);

}

$result = openssl_encrypt($data, "AES-128-CBC", $secret_key, OPENSSL_RAW_DATA, 0);

в mcrypt_encrypt нет IV прохода, я стараюсь не передавать IV в open_ssl, но получаю ошибки, IV передаетсядлиной всего 1 байт, шифр ожидает, что IV, равное 16 байтам, в примере кода .net должно передать значение $ iv.

любая помощь будет оценена.

спасибо

...