PHP | Funciones md5(), sha1(), hash()

PHP es un lenguaje de secuencias de comandos del lado del servidor, lo que implica que PHP es responsable de todas las funcionalidades de back-end requeridas por el sitio web. El sistema de autenticación es una de las partes más importantes de un sitio web y es uno de los lugares más comunes donde los desarrolladores cometen errores dejando de lado las vulnerabilidades para que otros las exploten. Un ejemplo podría ser el almacenamiento y uso de contraseñas de usuario en su forma real, lo que puede conducir a una situación en la que una persona no autorizada obtenga acceso a la base de datos y todo el sistema se vea comprometido.

Esta situación se puede prevenir fácilmente utilizando el hash de contraseña. Password Hashing es un método que toma la contraseña del usuario (una secuencia de caracteres de longitud variable) y la cifra en una contraseña de longitud fija que contiene caracteres aleatorios de un conjunto más grande. PHP tiene algunas funciones que se pueden usar para lograr lo mismo.

Función md5()

Sintaxis:

string md5 ($string, $getRawOutput)

Parámetros : La función puede tomar hasta un máximo de dos parámetros de la siguiente manera:

  • $string: este parámetro espera que la string se convierta en hash.
  • $getRawOutput: este parámetro opcional espera un valor booleano; en TRUE, la función devuelve el hash en un formato binario sin formato de longitud 16.

Tipo de devolución : esta función devuelve la string codificada (ya sea en una secuencia de caracteres hexadecimales en minúsculas de longitud 32 o en forma binaria sin formato de longitud 16).

Función sha1()

Sintaxis:

string sha1($string, $getRawOutput)

Parámetros : La función puede tomar hasta un máximo de dos parámetros de la siguiente manera:

  • $string: este parámetro espera que la string se convierta en hash.
  • $getRawOutput: este parámetro opcional espera un valor booleano; en TRUE, la función devuelve el hash en un formato binario sin formato de longitud 20.

Tipo de devolución : esta función devuelve la string codificada (ya sea en una secuencia de caracteres hexadecimales en minúsculas de longitud 40 o en forma binaria sin formato de longitud 20).

función hash

Sintaxis:

string hash($algo, $string, $getRawOutput)

Parámetros : La función puede tomar hasta un máximo de tres parámetros de la siguiente manera:

  • $algo: este parámetro espera que se utilice una string que defina el algoritmo hash. PHP tiene un total de 46 algoritmos hash registrados entre los cuales “sha1”, “sha256”, “md5”, “haval160, 4” son los más populares.
  • $string: este parámetro espera que la string se convierta en hash.
  • $getRawOutput: este parámetro opcional espera un valor booleano; en TRUE, la función devuelve el hash en un formato binario sin formato.

Tipo de devolución : esta función devuelve la string codificada (ya sea en una secuencia de caracteres hexadecimales en minúsculas o en forma binaria sin procesar).

El siguiente programa ilustra el funcionamiento de md5(), sha1() y hash() en PHP:

<?php
  
// PHP code to illustrate the working 
// of md5(), sha1() and hash()
  
$str = 'Password';
$salt = 'Username20Jun96';
echo sprintf("The md5 hashed password of %s is: %s\n", 
                                $str, md5($str.$salt));
echo sprintf("The sha1 hashed password of %s is: %s\n",
                                $str, sha1($str.$salt));
echo sprintf("The gost hashed password of %s is: %s\n", 
                        $str, hash('gost', $str.$salt));
                          
?>

Producción:

The md5  hashed password of Password is: 
a59a0e0fcfab450008571e94a5549225
The sha1 hashed password of Password is: 
a69652ddbc8401ae93b5d2f0390d98abd94fc2f4
The gost hashed password of Password is:
5376160a0d848c327949364b96fb9fd6e13a9b20c58fbab50f418ea9eea3b67f

Puntos importantes a tener en cuenta :

  • La complejidad de un algoritmo hash define qué tan bueno es el hash en sí mismo. Tanto sha1 como md5 no son muy complejos, por lo que los expertos sugieren que deberíamos usar los siguientes algoritmos solo si el factor de riesgo no es condenable.
  • Usar solo la contraseña como string de entrada da un resultado mediocre, pero usando sal podemos mejorar el resultado. Salt in hashing es un término que se refiere a una string aleatoria que se usa explícitamente con la contraseña. Muchos desarrolladores prefieren usar el nombre de usuario y algún otro campo (como la fecha de nacimiento en el ejemplo) como la sal que aumenta la aleatoriedad.
  • Un algoritmo hash debería ser preferiblemente una ruta de un solo sentido, es decir, no debería existir un método de descifrado, pero todos estos algoritmos conocidos se pueden adivinar con una implementación adecuada de ataque de fuerza bruta y diccionario.

Referencia :

Publicación traducida automáticamente

Artículo escrito por PronabM y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *