Almacenar contraseña en la base de datos MySQL

Haider Ali 20 junio 2023
  1. que es hashing
  2. Use MD5 (str) para almacenar contraseñas en MySQL
  3. Use SHA1 (str) para almacenar contraseñas en MySQL
  4. Utilice la función CONTRASEÑA para almacenar contraseñas en MySQL
  5. Use la función ENCRYPT para almacenar contraseñas en MySQL
Almacenar contraseña en la base de datos MySQL

Si no tiene idea de cómo almacenar una contraseña en la base de datos MySQL, este es el lugar correcto. En esta guía, podrá aprender cómo almacenar contraseñas hash en la base de datos MySQL, las diferentes técnicas y sus métodos específicos utilizados para almacenar la contraseña Hash.

que es hashing

Hashing convierte un número determinado de claves o una cadena de caracteres en un valor de longitud fija más corto. En Hashing, el hecho de que los datos tengan un tamaño fijo significa que cualquier número de claves o cadenas de caracteres convertidos en caracteres hash tienen el mismo tamaño.

Otra propiedad del hash es que es un proceso no recuperable, lo que significa que si un valor se ha convertido en un hash, no hay forma de recuperar el valor de los datos originales.

En MySQL se utilizan diferentes funciones de hashing; estos son los siguientes:

  1. MD5 (calle)
  2. SHA1 (calle)
  3. CONTRASEÑA
  4. CIFRAR

Use MD5 (str) para almacenar contraseñas en MySQL

md5 es una función que toma una suma de comprobación de datos de 128 bits y la devuelve como una cadena de 32 dígitos hexadecimales.

Primero, creamos una tabla clientes en nuestra base de datos y dos campos de esa tabla con el tipo de datos varchar.

mesa de clientes

Insertamos algunos valores y creamos una contraseña hash usando md5.

insertar en clientes 1 usando md5

insertar en clientes 2 usando md5

Como puede ver, la función md5 transformó nuestros dos valores de entrada en 32 dígitos hexadecimales.

Mostremos lo que queríamos decir antes cuando dijimos que es una función no recuperable.

use md5 para obtener datos 1

usa md5 para obtener datos 2

Como puede ver, tuvimos que usar la función md5 para nuestros dos valores para recuperar nuestros datos; de lo contrario, generaba un error.

Use SHA1 (str) para almacenar contraseñas en MySQL

sha1 es una función de hash que tiene un rango mucho mayor que la función md5 anterior. Convierte la suma de verificación de datos de 160 bits en una cadena de 40 dígitos hexadecimales.

Aquí hay un ejemplo para su mejor comprensión.

insertar en clientes usando sha1

A estas alturas, ya habría tenido una idea amplia de que estas dos funciones hash funcionan y por qué son diferentes entre sí. Otra cosa sobre sha1 es que tiene versiones mucho mejores disponibles, proporcionando un rango mucho mayor.

Estos son los siguientes:

  1. SHA224: convierte la suma de comprobación de datos de 224 bits y devuelve una cadena de 56 dígitos hexadecimales.
  2. SHA256: convierte la suma de comprobación de datos de 256 bits y devuelve una cadena de 64 dígitos hexadecimales.
  3. SHA384: convierte la suma de comprobación de datos de 384 bits y devuelve una cadena de 96 dígitos hexadecimales.
  4. SHA512: convierte la suma de comprobación de datos de 512 bits y devuelve una cadena de 128 dígitos hexadecimales.

Utilice la función CONTRASEÑA para almacenar contraseñas en MySQL

La función contraseña genera una contraseña codificada utilizando una cadena de contraseña de texto sin formato. La función contraseña devolvería NULL en caso de un argumento NULL.

Hagamos algunos ejemplos para su mejor comprensión.

SELECT
PASSWORD('xyz');

Producción :

6gd7gb67shy87865

Ahora, probemos una cadena que tenga dígitos y caracteres.

SELECT
PASSWORD('xyz123');

Producción :

54fg56gs32sgi3862

Otra cosa importante con respecto a la función contraseña es que no es compatible con todas las versiones de MySQL. Las versiones compatibles son:

  1. MySQL 5.6
  2. MySQL 5.5
  3. MySQL 5.1
  4. MySQL 5.0
  5. MySQL 4.1

Use la función ENCRYPT para almacenar contraseñas en MySQL

Es una conversión de una cadena de caracteres en datos binarios difíciles de leer. Los datos cifrados se pueden descifrar fácilmente más tarde.

Una nota importante es que el tipo de datos de la columna debe ser BLOB.

Para el Cifrado, se utilizan dos tipos de funciones:

  1. AES (Estándares de cifrado avanzado): utiliza un algoritmo AES oficial que garantiza una codificación con una clave de 128 bits. Para el cifrado usando aes, debe escribir AES_ENCRYPT(str,key_str).
  2. DES (Estándares de cifrado de datos) utiliza el algoritmo Triple-DES. La condición para este cifrado es que MySQL debe configurarse con soporte SSL.

Un punto a reflexionar aquí es que la función Cifrar está disponible solo para los sistemas operativos Unix. Entonces, para otros sistemas operativos, tendríamos que usar AES o DES Encryption.

Para familiarizarte con esta técnica, profundicemos en la función de cifrado.

insertar en clientes usando cifrar

Después de aplicar el AES_Encryption sobre el valor, podemos ver sus efectos en la tabla. Tenga otro ejemplo:

insertar en clientes usando cifrar 2

Para recuperar nuestro valor, tendríamos que proporcionar la clave correcta; de lo contrario, no recuperaríamos los datos deseados.

aes-descifrar

Aquí, insertamos la clave incorrecta y el resultado se muestra a continuación.

llave incorrecta

Aquí, recuperamos nuestros otros valores usando la tecla correcta.

llave correcta

Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn