Alternativa PHP7.1 mcrypt
encoding decode (5)
Como se mencionó anteriormente, open_ssl es una buena alternativa para mcrypt. El único problema que tuve con open_ssl es que no se puede usar para cadenas grandes.
Escribí un script (clase estática), que supera este problema (las cadenas grandes se dividen en fragmentos y se cifran / descifran por separado en segundo plano).
Ver idea general: https://gist.github.com/petermuller71/33616d55174d9725fc00a663d30194ba
La función de Mcrypt ha quedado en desuso a partir de PHP 7.1.0.
Mis funciones de codificación / decodificación de cadenas en desuso:
$key: secret key
$str: string
$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key))));
$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($str), MCRYPT_MODE_CBC, md5(md5($key))), "/0");
¿Puedes sugerir algunas alternativas?
Deberías usar openssl_encrypt lugar. ¡Saludos!
Para
MCRYPT_RIJNDAEL_256
una respuesta completa para PHP7.3 aquí:
https://.com/a/53937314/243782
retazo:
funciona así con la biblioteca phpseclib
$rijndael = new /phpseclib/Crypt/Rijndael(/phpseclib/Crypt/Rijndael::MODE_ECB);
$rijndael->setKey(ENCRYPT_KEY);
$rijndael->setKeyLength(256);
$rijndael->disablePadding();
$rijndael->setBlockLength(256);
$decoded = $rijndael->decrypt($term);
echo encrypt_openssl($str, $key);
function encrypt_openssl($msg, $key, $iv = null) {
$iv_size = openssl_cipher_iv_length(''AES-256-CBC'');
if (!$iv) {
$iv = openssl_random_pseudo_bytes($iv_size);
}
$encryptedMessage = openssl_encrypt($msg, ''AES-256-CBC'', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encryptedMessage);
}
mcrypt puede eliminarse en PHP 7.1 alternativa openssl