Encriptar bases de datos en Laravel
En algunas ocasiones podemos tener la necesidad de encriptar bases de datos en Laravel, más aún con el RGPD. Si ese es tu caso, en este tutorial vamos a ver qué sencillo es conseguir este propósito gracias a Eloquent Mutators y Accessors. Definir un Trait para extender Eloquent Lo primero que vamos a hacer para conseguir un comportamiento más dinámico es crear un Trait para sobrescribir los métodos getAttribute y setAttribute de Eloquent, los cuáles nos permitirán alterar los datos de nuestro modelo al momento de obtener y establecer datos.
Además de los métodos mencionados anteriormente, también tenemos 2 métodos importantes, el método encrypt y el método decrypt, es importante decir que este tipo de encriptación no es fiable si los datos que quieres manejar son sensibles, el motivo es que nosotros vamos a querer encriptar pero también desencriptar para mostrar estos datos posteriormente, incluso para iniciar sesión utilizando el correo electrónico, este último es el motivo real, para que fuese seguro la variable $iv debería ser dinámica y no estática. Aplicar el Trait Encryptable a nuestros modelos Ahora vamos a abrir por ejemplo el modelo User para utilizar el Trait Encryptable de la siguiente forma.
Sólo por utilizar la propiedad $encryptable pasando las columnas que queramos encriptar en base de datos tenemos suficiente, si ahora por ejemplo registras un nuevo usuario verás que las columnas name y email son encriptadas en base de datos y si obtienes los usuarios verás que al acceder a dichas columnas éstas aparecen sin encriptar.