defuse/php-encryption es una biblioteca que se puede utilizar para cifrar y descifrar datos. Ponerse en marcha es bastante simple para comenzar a cifrar y descifrar datos. Tienen un excelente tutorial que ayuda a explicar los conceptos básicos sobre cómo utilizar la biblioteca, así como las importantes implicaciones de seguridad relacionadas con el cifrado.
La instalación es sencilla con composer.
composer require defuse/php-encryption
Luego necesitarás generar una clave de cifrado.
vendor/bin/generate-defuse-key
Esto generará una clave que deberás mantener segura. Podrías guardar la clave en tu archivo app/config/config.php en el array al final del archivo. Aunque no es el lugar perfecto, al menos es algo.
app/config/config.php
Ahora que tienes la biblioteca y una clave de cifrado, puedes empezar a cifrar y descifrar datos.
use Defuse\Crypto\Crypto; use Defuse\Crypto\Key; /* * Establecerlo en tu archivo de inicio (bootstrap) o public/index.php */ // Método de cifrado Flight::map('encrypt', function($datos_crudos) { $clave_cifrado = /* $config['clave_cifrado'] o un file_get_contents de dónde pusiste la clave */; return Crypto::encrypt($datos_crudos, Key::loadFromAsciiSafeString($clave_cifrado)); }); // Método de descifrado Flight::map('decrypt', function($datos_cifrados) { $clave_cifrado = /* $config['clave_cifrado'] o un file_get_contents de dónde pusiste la clave */; try { $datos_crudos = Crypto::decrypt($datos_cifrados, Key::loadFromAsciiSafeString($clave_cifrado)); } catch (Defuse\Crypto\Exception\WrongKeyOrModifiedCiphertextException $ex) { // ¡Un ataque! Se cargó la clave incorrecta o el texto cifrado // ha cambiado desde que fue creado, ya sea corrompido en la base de datos o modificado intencionalmente por Eve tratando de llevar a cabo un ataque. // ... manejar este caso de una manera adecuada para tu aplicación ... } return $datos_crudos; }); Flight::route('/cifrar', function() { $datos_cifrados = Flight::encrypt('Esto es un secreto'); echo $datos_cifrados; }); Flight::route('/descifrar', function() { $datos_cifrados = '...'; // Obtener los datos cifrados de algún lugar $datos_descifrados = Flight::decrypt($datos_cifrados); echo $datos_descifrados; });