Codificación y Hash
Contents
Codificación y Hash#

Cifrado de datos con funciones específicas de PHP 7.4
Codificación#
1<?php
2
3 define('METODO','AES-256-CBC'); //En esta constante guardamos el método de encriptación
4 define('CLAVE_SECRETA','$BE@ppp80'); //Aquí se guardará la clave secreta.
5 define('SUBCLAVE_SECRETA','99326425'); //Y aquí una clave adicional.
6
7 function encriptar($cadena){
8
9 $salida = "";
10 $prefijo = hash('sha256', CLAVE_SECRETA); //vamos a encriptar el prefijo de la clave con sha256.
11 $sufijo = substr(hash('sha256', SUBCLAVE_SECRETA), 0, 16); //y ahora vamos a hacer lo mismo con el sufijo añadiendole el método substr().
12
13 $salida = openssl_encrypt($cadena, METODO, $prefijo, 0, $sufijo); // Ahora vamos a escribir en la variable de salida el resultado encriptado de la cadena entrante combinada con el metodo de encriptación, el prefijo, valor 0 y el sufijo.
14 $salida = base64_encode($salida); //finalmente añadimos el metodo de encriptado en base64 para asegurarla más.
15
16 return $salida; //devolvemos el valor de salida.
17
18 }
19
20 $plain_txt = "clave";
21 echo "clave sin encriptar: " . $plain_txt;
22 echo "<br>";
23 echo "clave ya encriptada: " . encriptar($plain_txt); //Ahora aquí vamos a utilizar nuestra función de encriptado con la variable que contiene la clave.
24
25?>
Método para descodificar:
1<?php
2
3 define('METODO','AES-256-CBC'); //En esta constante guardamos el método de encriptación
4 define('CLAVE_SECRETA','$BE@ppp80'); //Aquí se guardará la clave secreta.
5 define('SUBCLAVE_SECRETA','99326425'); //Y aquí una clave adicional.
6
7 function decrypt($cadena){
8
9 $prefijo = hash('sha256', CLAVE_SECRETA);
10 $sufijo = substr(hash('sha256', SUBCLAVE_SECRETA), 0, 16);
11 //hasta aqui todo igual, ahora cambiamos encrypt por decrypt e introducimos la cadena desencriptandola con base64_decode y le aplicamos las claves necesarias para desencriptarlo todo junto de nuevo y devolver el valor de salida correspondiente.
12 $salida = openssl_decrypt(base64_decode($cadena), METODO, $prefijo, 0, $sufijo);
13 return $salida;
14 }
15
16 $clave = "cDQwMTBZbmkwS3BwZm9lR1BtYlZJQT09";
17
18 echo "La clave encriptada es: " . $clave;
19 echo "<br>";
20 echo "La clave desencriptada es: " . decrypt($clave);
21
22?>
Generar un Hash con MD5#
1<?php
2
3 $clave = isset($_GET['password']) ? $_GET['password'] : '';
4
5 $salt = '$BE@pppp190716LS%';
6
7 echo "su clave es: " . md5($salt . $clave);
8
9?>
Ingresamos la url: http://localhost:8000/?password=coca-cola para ver el hash generado.
Código para descifrar el hash:
1<?php
2 $clave = isset($_GET['password']) ? $_GET['password'] : '';
3
4 $salt = '$BE@pppp190716LS%';
5
6 if(md5($salt . $clave) == '116103ad09bf77e6e771c08dc3f63967'){
7 echo 'Contraseña correcta';
8 }
9 else{
10 echo 'contraseña incorrecta';
11 }
12?>
Ingresamos la url: http://localhost:8000/?password=coca-cola para descifrar el hash.