Dos funciones para encriptar y desencriptar un texto mediante el algoritmo AES 256, con modo de encadenamiento CBC y con vector de inicialización.

Función PHP para encriptar/cifrar texto en AES 256 CBC

A continuación, mostramos un ejemplo de función PHP a la que se le pasa por argumento un texto y una clave (de 16 bytes) y devuelve un string con la cadena de texto cifrada más un vector de inicialización aleatorio, usando el algoritmo AES 256 y el modo de encadenamiento CBC:

Función PHP para desencriptar/descifrar texto en AES 256 CBC

A continuación, mostramos un ejemplo de función PHP a la que se le pasa por argumento un texto cifrado (cuyos primeros 16 bytes con el vector de inialización) y una clave (de 16 bytes) con la que se cifró y devuelve un string con la cadena de texto descifrada/desencriptada:

Ejemplo de uso de las funciones PHP de encriptar y desencriptar texto en AES 256

Un ejemplo de uso de la función de encriptar texto, usando una clave de 32 bytes generada aleatoriamente para mayor seguridad que, por supuesto, deberemos conocer para su posterior descifrado:

Para el caso del descifrado de un texto cifrado, un ejemplo de uso podría ser:

Configuración de PHP para usar las funciones openssl_decrypt y openssl_encrypt

Si usamos las funciones anteriores para cifrar/descifrar y recibimos estos errores:

Call to undefined function openssl_decrypt()

Call to undefined function openssl_encrypt()

El motivo es que no tenemos habilitada la extensión openssl en PHP. Para habilitarla, editaremos el fichero php.ini (o el que corresponda según la versión de PHP y el sistema operativo donde resida Apache o Nginx y descomentaremos esta línea:

;extension=openssl

Quitándole el punto y coma del principio y guardaremos los cambios en el fichero php.ini:

Reiniciaremos el servicio de Apache o Nginx y, con esto, se solucionará el problema y podremos usar las librerías openssl de PHP para cifrar/descifrar sin errores.