SQL | Cifrar datos
Tags: sql, lastdragon, ciberseguridad
Published: 2023-09-24 14:29:32


#Hola a todos#

Hoy les quiero compartir un código hecho en php para poder cifrar los datos de su base de datos y poder descencriptarlos esto con la finalidad de mejorar la seguridad de sus BD.

Quiero aclarar que este codigo lo obtuve de el video de lastDragon solo lo mejore un poco

[Link del video de last dragon](https://www.youtube.com/watch?v=8jW0CvtBg8c)



```
<?php
class Encriptar
{
    private $llave;
    private $vector;

    public function __construct($llave = 'AQUI VA TU LLAVE', $vector = 'AQUI VA TU VECTOR TIENE QUE TENER SOLO 16 CARACTERES')
    {
        $this->llave = $llave;
        $this->vector = $vector;
    }

    public function cifrar($texto)
    {
        // Convertir el texto a base64 para manejar comillas simples y caracteres especiales
        $textoCodificado = base64_encode($texto);
        $cifrado = openssl_encrypt($textoCodificado, 'aes-256-cbc', $this->llave, OPENSSL_RAW_DATA, $this->vector);
        if ($cifrado === false) {
            throw new Exception('Error al cifrar los datos.');
        }
        return base64_encode($cifrado);
    }

    public function descifrar($cifrado)
    {
        $descifrado = openssl_decrypt(base64_decode($cifrado), 'aes-256-cbc', $this->llave, OPENSSL_RAW_DATA, $this->vector);
        if ($descifrado === false) {
            throw new Exception('Error al descifrar los datos.');
        }
        // Decodificar desde base64 para obtener el texto original
        return base64_decode($descifrado);
    }
}
```


###Ejemplo de uso###


```
<?php
    include_once "encriptar.php";

    $Encriptar= new Encriptar();
    $encriptado =  $Encriptar->cifrar("Texto a encriptar");

    echo "Texto cifrado es: " . $encriptado;

    // DESCENCRIPTANDO ...
    echo "Texto descifrado es: " .$Encriptar->descifrar($encriptado);


```





##¿Que es OPENSSL_ENCRYPT?

openssl_encrypt es una función en PHP que se utiliza para cifrar datos utilizando la biblioteca OpenSSL. OpenSSL es una biblioteca de código abierto que proporciona implementaciones de varios protocolos de seguridad, incluyendo SSL (Secure Sockets Layer) y TLS (Transport Layer Security), así como algoritmos de cifrado y funciones criptográficas.

La función openssl_encrypt se utiliza para cifrar datos utilizando diferentes algoritmos de cifrado simétrico, como AES (Advanced Encryption Standard), DES (Data Encryption Standard), y otros. Permite cifrar datos utilizando una clave secreta y, opcionalmente, un vector de inicialización (IV) para mejorar la seguridad.

Aquí tienes un ejemplo simple de cómo se utiliza openssl_encrypt en PHP:

```
$data = "Hola, mundo!";
$clave = "MiClaveSecreta";
$iv = random_bytes(16); // Vector de inicialización aleatorio

$cifrado = openssl_encrypt($data, 'AES-256-CBC', $clave, 0, $iv);

echo "Texto cifrado: " . $cifrado;
```

En este ejemplo, estamos cifrando el mensaje "Hola, mundo!" utilizando el algoritmo AES-256 en modo CBC (Cipher Block Chaining) con una clave secreta y un IV generados aleatoriamente.

Es importante destacar que el uso seguro de openssl_encrypt implica la gestión adecuada de las claves y otros parámetros de seguridad, así como el almacenamiento seguro de dichas claves. El cifrado es una parte fundamental de la seguridad de datos, y su implementación incorrecta puede llevar a vulnerabilidades de seguridad.