Buscar en la base de conocimientos
< Todos los temas
Imprimir

Encriptar y desencriptar una cadena de texto en php

// Función para encriptar un texto
function encrypt($plaintext, $key, $iv) {
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options, $iv);
    return base64_encode($ciphertext);
}

// Función para desencriptar un texto
function decrypt($ciphertext, $key, $iv) {
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    $ciphertext = base64_decode($ciphertext);
    $plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options, $iv);
    return $plaintext;
}

La función encrypt toma un texto en claro ($plaintext) y una clave ($key) y un vector de inicialización ($iv) para encriptar el texto utilizando el algoritmo AES-256-CBC. La función devuelve el texto cifrado en Base64.

La función decrypt toma un texto cifrado en Base64 ($ciphertext) y una clave ($key) y un vector de inicialización ($iv) para desencriptar el texto utilizando el mismo algoritmo. La función devuelve el texto en claro.

Es importante tener en cuenta que la clave y el vector de inicialización deben ser los mismos tanto para la función de encriptación como para la de desencriptación.

¿Cómo puedo utilizar estas funciones en mi código PHP?

Para utilizar las funciones de encriptación y desencriptación que te he proporcionado en PHP, sigue estos pasos:

  1. Copia y pega el código de las funciones en tu archivo PHP o en un archivo de biblioteca incluido en tu proyecto.
  2. Define una clave y un vector de inicialización. Estos deben ser valores aleatorios y únicos, y deben ser los mismos para la función de encriptación y la de desencriptación. Puedes generar valores aleatorios utilizando la función openssl_random_pseudo_bytes de PHP.
$key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(16);

3- Llama a las funciones encrypt y decrypt según sea necesario, pasando el texto en claro y los valores de clave y vector de inicialización como parámetros.

// Encriptar un texto
$plaintext = "Este texto se va a encriptar.";
$ciphertext = encrypt($plaintext, $key, $iv);

// Desencriptar un texto
$decrypted_text = decrypt($ciphertext, $key, $iv);
  1. Utiliza el texto cifrado o el texto en claro desencriptado según sea necesario en tu código.

Es importante tener en cuenta que la clave y el vector de inicialización deben mantenerse confidenciales y no deben ser compartidos públicamente o almacenados en texto sin formato.

¿Qué tan segura es la encriptación proporcionada por estas funciones?

La seguridad de la encriptación proporcionada por estas funciones depende en gran medida de la fortaleza de la clave y el vector de inicialización que se utilicen. Si se generan valores aleatorios y únicos para la clave y el vector de inicialización, y se mantienen confidenciales, el cifrado AES-256-CBC proporciona un alto nivel de seguridad.

Sin embargo, si se utilizan valores débiles o predecibles para la clave o el vector de inicialización, o si se comparten públicamente, el cifrado puede ser vulnerable a ataques de fuerza bruta o criptoanálisis. Además, la implementación de la función de encriptación y desencriptación también puede ser un factor en la seguridad del cifrado.

En general, se recomienda utilizar bibliotecas de cifrado de alta calidad y mantener las claves y los vectores de inicialización en un lugar seguro y confidencial. Además, se deben seguir las mejores prácticas de seguridad en el manejo de datos sensibles y en la transmisión de datos cifrados.

Sidebar