Estoy creando una aplicación que genera la clave de licencias y la almacena en una base de datos (las licencias se verifican en línea). No deseo almacenar estas licencias sin daños, en caso de robo de la base de datos.
Sin embargo, una vez que la clave de licencia está en hash (con sal), resulta muy difícil verificar si existe una clave determinada en la base de datos, ya que la sal utilizada cambiará con cada clave.
¿Cuál es la mejor solución para poder encontrar y verificar una clave de licencia con hash? He considerado la mitad de la clave de licencia sin sal, y la he usado para identificar la fila de la licencia antes de verificar la clave completa con sal. ¿Es esto demasiado arriesgado?
También he considerado usar el último 1/4 de la clave como un identificador (por ejemplo, AAAB = 1, AAAC = 2, etc.), para una longitud de clave de 16, esto permite 2 ^ 20 teclas.
( Nota al margen: las teclas están codificadas en base32, y tendrán 16 caracteres de longitud (pero podrían elegirse por más tiempo). La aplicación es general, es decir, no está vinculada a ningún caso de uso en particular , por lo que no hay una estimación fija sobre el número de licencias requeridas, aunque la longitud de la clave podría aumentarse dependiendo de la estimación.