замена MCRYPT_RIJNDAEL_128 в режиме ECP на OPENSSL_ENCRYPT

Я получил следующие функции в устаревшем приложении:

return trim(
    base64_encode(
        mcrypt_encrypt(
            MCRYPT_RIJNDAEL_128, 
            $key, 
            $data, 
            MCRYPT_MODE_ECB, 
            mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND)
        )
    )
);

и

return trim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128, 
        $key, 
        base64_decode($data), 
        MCRYPT_MODE_ECB, 
        mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND)
    )
);

который я хотел бы заменить на openssl, потому что mcrypt устарел с php 7.0.

Я узнал, что это должно быть возможно, но мне нужно заполнение нулями, чтобы сделать его совместимым, а не использовать PKCS#7. Пока я остановился на этом:

return trim(
    base64_encode(
        openssl_decrypt(
            base64_decode($data), 
            "aes-256-ecb", 
            $key,  
            OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, 
            $key
        );

person strcatcpy    schedule 18.03.2021    source источник
comment
Есть много сообщений о миграции mcrypt-openssl на SO, например. mcrypt устарел, какая альтернатива?. Кстати, OPENSSL_ZERO_PADDING не переключается на нулевое заполнение, но отключает заполнение PKCS7. После этого заполнение нулями должно быть реализовано вручную, так как openssl_encrypt/decrypt его не поддерживает.   -  person user 9014097    schedule 18.03.2021