Sto creando un'applicazione che genera una chiave di licenza e la memorizza in un database (le licenze sono controllate online). Non desidero archiviare queste licenze senza alcuna interruzione, nel caso in cui il database venga rubato.
Tuttavia, una volta che la chiave di licenza è stata sottoposta a hashing (con salt), diventa molto difficile controllare se esiste una determinata chiave nel database, poiché il sale utilizzato cambierà con ciascuna chiave.
Qual è la soluzione migliore per poter trovare e verificare una chiave di licenza con hash? Ho preso in considerazione l'hashing della metà della chiave di licenza e l'ho usata per identificare la riga della licenza prima di controllare l'hash della chiave completa con salt. È troppo rischioso?
Ho anche preso in considerazione l'utilizzo dell'ultimo 1/4 della chiave come identificatore (ad esempio AAAB = 1, AAAC = 2 ecc.), per una lunghezza della chiave di 16, questo consente 2 ^ 20 tasti.
( nota laterale: i tasti sono codificati in base32 e avranno una lunghezza di 16 caratteri (ma potrebbero essere scelti più a lungo). L'applicazione è generale - cioè non è legata a nessun caso d'uso particolare , quindi non esiste una stima fissa del numero di licenze richieste - sebbene la lunghezza della chiave possa essere aumentata a seconda di quella esima).