php encoding decode mcrypt php-7.1

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?


Considere usar RNCryptor o RNCryptor , proporcionan una solución completa, se mantienen y son correctos.



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