En mi tabla de base de datos de usuario, tomo el hash MD5 de la dirección de correo electrónico de un usuario como id.Representar hash MD5 como un número entero
Ejemplo: email([email protected]) = id(d41d8cd98f00b204e9800998ecf8427e)
desgracia, he para representar los ids como valores enteros ahora - con el fin de ser capaz de utilizar un API donde el ID sólo puede ser un número entero.
Ahora estoy buscando una forma de codificar el ID en un entero para enviar una decodificación de nuevo al recibir. ¿Cómo podría hacer esto?
Mis ideas hasta ahora:
convert_uuencode()
yconvert_uudecode()
para el hash MD5- reemplazar cada carácter del hash MD5 de su valor
ord()
¿Qué método es mejor? ¿Conoces formas aún mejores de hacer esto?
Espero que me puedan ayudar. ¡Muchas gracias por adelantado!
¿Tiene ningún otro, posiblemente interno, valor para identificar a tus usuarios? Bueno, deberías tener al menos un PK para tu tabla de usuarios. – Malax
@Malax: Sí, la clave principal es el campo de identificación que contiene el hash MD5. ¿Es esta una mala solución? – caw
El uso de un hash MD5 como la clave principal de su tabla de usuario generalmente no es una gran idea. Un ID de autoincremento/entero de serie es de 4 a 8 bytes. Un hash md5 tiene 32 bytes. Comparaciones en valores enteros (p.cada vez que se UNE a esa tabla, o SELECCIONE una fila) será mucho más rápido que comparar cadenas de 32 bytes, y los valores enteros requerirán menos almacenamiento. Y realmente ... si quieres usar un valor de cadena, ¿por qué no usar la dirección de correo electrónico en sí? Va a ser de 32 bytes o menos, la mayoría de las veces. –