¿Cómo cifrar y descifrar cadenas en PHP?

Como Cifrar Y Descifrar Cadenas En Php



Cifrado es el proceso de convertir datos en un código secreto o un formato que no es comprensible para cualquiera que no tenga la clave para decodificarlo. Descifrado es el procedimiento para tomar esa información y devolverla a su formato original y legible. En PHP, cifrado, y descifrado se puede utilizar para proteger datos confidenciales, como contraseñas, información de tarjetas de crédito y otros datos personales.

El cifrado El algoritmo debe tomar una cadena de datos que desea encriptar y usar el método de encriptación elegido para encriptar los datos. Luego, el algoritmo debe devolver los datos cifrados en un formato que pueda almacenar en una base de datos o archivo.

A descifrar los datos, debe utilizar el mismo método de cifrado para descifrar los datos que se utilizó para cifrarlos. Esto significa que deberá almacenar la clave en algún lugar para poder usarla para decodificar los datos más adelante.







¿Cómo cifrar y descifrar una cadena PHP?

Una cadena PHP puede ser encriptado y descifrado utilizando el abressl_encrpyt() y abressl_decrypt() métodos, respectivamente.



Cifrar una cadena usando la función openssl_encrypt()

A cifrar una cadena en PHP usando el abressl_encrypt() función, debe proporcionar la cadena de texto sin formato, el método de cifrado y una clave. La función devolverá los datos cifrados, que luego puede almacenar o transmitir de forma segura.



La sintaxis para abressl_encrypt() método es:





cadena abressl_encrypt ( cadena $datos , cadena $método , cadena $clave , $opciones = 0 , cadena $iv , cadena $etiqueta = NULO , cadena $ tu , En t $longitud_etiqueta = 16 )
  • $datos: La cadena o los datos que desea cifrar.
  • $método: El método de cifrado o cifrado que desea utilizar. Puede obtener una lista de los métodos de cifrado admitidos utilizando el abressl_get_cipher_methods()
  • $clave: La clave de cifrado que se utilizará para cifrar los datos. Debe ser una cadena de longitud y aleatoriedad adecuadas, según el método de cifrado elegido.
  • $opciones: Un parámetro opcional que puede incluir indicadores adicionales para opciones de cifrado específicas. Puedes combinar banderas usando el bit a bit O (|) Las banderas comunes incluyen OPENSSL_RAW_DATA y OPENSSL_ZERO_PADDING .
  • $iv: El vector de inicialización (iv) utilizado para el cifrado; debe ser un valor único y aleatorio, proporcionado como una cadena.
  • $etiqueta: Un parámetro opcional utilizado para los modos de cifrado AEAD (Cifrado autenticado con datos asociados), como GCM (Galois/Modo de contador) o CCM (Contador con CBC-MAC). Almacena la etiqueta de autenticación generada durante el cifrado.
  • Su: Datos autenticados adicionales que se pueden usar para los modos de cifrado AEAD.
  • $longitud_etiqueta: La longitud de la etiqueta de autenticación. Para el modo GCM, la longitud de la etiqueta oscila entre 4 y 16 bytes.

Por ejemplo:


$cadena_simple = 'Bienvenido a Linuxhint \norte ' ;
eco 'Cadena original:' . $cadena_simple ;
$cifrado = 'AES-128-CTR' ;
$iv_longitud = abressl_cipher_iv_length ( $cifrado ) ;
$opciones = 0 ;
$cifrado_iv = '1234567891011121' ;
$clave_cifrado = 'linux' ;
$cifrado = abressl_encrypt ( $cadena_simple , $cifrado ,
            $clave_cifrado , $opciones , $cifrado_iv ) ;
eco 'Cadena cifrada: ' . $cifrado . ' \norte ' ;
?>

El código primero declara el texto básico. “Bienvenido a Linuxhint” y usa el comando echo para mostrarlo. Luego, especifica el algoritmo de encriptación a utilizar, AES-128-CTR . También utiliza el abressl_cipher_iv_length() Función para calcular el tamaño de la vector de inicialización (IV) necesario para este cifrado.



El código establece el cifrado. IV valor a ‘1234567891011121’ y la clave de cifrado para 'linux' . La cadena encriptada se muestra luego usando el comando echo una vez que el cifrado se ha completado usando el abressl_encrypt() función. Debido al vector de inicialización aleatorio utilizado para el cifrado, la cadena cifrada final variará cada vez.

Descifrar una cadena usando la función openssl_decrypt()

Para descifrar una cadena en PHP, puede usar el abressl_decrypt() función. Esta función toma los datos cifrados, el método de cifrado y la clave como entradas y devuelve el texto sin formato descifrado.

La sintaxis para abressl_decrypt() método es:

cadena openssl_decrypt ( cadena $datos , cadena $método , cadena $clave , En t $opciones = 0 , cadena $iv , cadena $etiqueta , cadena $ tu )

Los argumentos pasados ​​a la función son:

  • $datos: La cadena cifrada o los datos que desea descifrar.
  • $método: El método de cifrado o cifrado utilizado durante el cifrado. Puede obtener una lista de los métodos de cifrado admitidos utilizando el abressl_get_cipher_methods()
  • $clave: La clave de cifrado que se utilizó para cifrar los datos. Debe coincidir con la clave utilizada durante el cifrado.
  • $opciones: Un parámetro opcional que puede incluir indicadores adicionales para opciones de descifrado específicas. Puede combinar banderas usando el operador bit a bit OR (|). Las banderas comunes incluyen OPENSSL_RAW_DATA y OPENSSL_ZERO_PADDING .
  • $iv: El vector de inicialización (IV) utilizado durante el cifrado. Debe ser el mismo IV que se usó durante el cifrado y se pasó como una cadena.
  • $etiqueta: La etiqueta de autenticación para los modos de cifrado AEAD (Cifrado autenticado con datos asociados), como GCM (Modo Galois/Contador) o CCM (Contador con CBC-MAC). Si la autenticación falla, openssl_decrypt() devolverá FALSO.
  • Su: Datos autenticados adicionales que se usaron durante el cifrado para los modos de cifrado AEAD.

Valor de retorno: Si tiene éxito, devuelve la cadena descifrada; de lo contrario, devuelve FALSO.

Por ejemplo:


$cadena_cifrada = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
eco 'Cadena cifrada: ' . $cadena_cifrada . ' \norte ' ;
$descifrado_iv = '1234567891011121' ;
$cifrado = 'AES-128-CTR' ;
$opciones = 0 ;
$clave_descifrado = 'linux' ;
$descifrado = abressl_decrypt ( $cadena_cifrada , $cifrado ,
        $clave_descifrado , $opciones , $descifrado_iv ) ;
eco 'Cadena descifrada:' . $descifrado ;
?>

La longitud del vector en este código se calcula usando el abressl_cipher_iv_length() y se utilizan los mismos parámetros de cifrado iv y clave durante el cifrado. El algoritmo de cifrado se define como AES-128-CTR .

La cadena cifrada previamente se descifra utilizando el algoritmo de cifrado, la clave de cifrado, la configuración y los valores IV por parte del abressl_decrypt() función. El texto descifrado resultante se muestra luego usando el comando echo.

Conclusión

La creación de sitios web a menudo implica cifrar y descifrar datos. Al utilizar el cifrado para proteger los datos confidenciales, puede evitar exponer a sus usuarios al robo de identidad, fraude y otras amenazas de seguridad. Las cadenas en PHP pueden ser cifradas y descifradas por las funciones abressl_encrypt() y abressl_decrypt() funciones Al emplear cuidadosamente el algoritmo y la clave de encriptación, puede crear un sistema sólido y seguro para manejar datos confidenciales en sus aplicaciones PHP.