sql >> Base de Datos >  >> RDS >> Mysql

Campo de texto único en MySQL y php

Para una sal, la singularidad es más importante que la longitud y la previsibilidad. Asumes que el atacante tiene la sal.

Un identificador único universal (UUID) sería lo mejor, y hay ejemplos que generan identificadores únicos universales en la página de documentos para el php idúnico() función. Un UUID tiene la ventaja sobre una cadena aleatoria de que es legible por humanos y tiene una longitud fija, por lo tanto, puede almacenarlo en un campo varchar y usar un índice único para asegurarse de que nunca haya duplicados.

Hashing el tiempo con MD5 es un método común para generar valores únicos porque tiene una longitud fija y es legible por humanos. Sin embargo, tiene más sentido simplemente generar una cadena aleatoria de longitud fija y codificarla en hexadecimal usted mismo. Los hashes no están diseñados tanto para ser únicos como para no ser reversibles. El uso de una función hash garantiza colisiones, aunque habrá menos colisiones con SHA1 que con MD5.

La longitud de la sal es realmente solo un factor porque cuanto más larga es la sal, más probable es que sea universalmente única.