La carta d'identità elettronica austriaca si basa sui cosiddetti identificatori di settore. Ad esempio, un ospedale può identificare una persona ottenendo un ID di settore per quella persona, che viene calcolato in modo approssimativo come segue:
sha1(personalId + "+" + prefix + sectorId); // prefix is constant and irrelevant
È una buona idea? Penso che la possibilità di una collisione, non importa quanto piccola, rappresenta un rischio.
Negli hashtables, quando c'è una collisione, hai altri mezzi per stabilire l'uguaglianza, ma con le chiavi primarie non puoi possederne due uguali. Questo può essere aggirato da una chiave composta, ma il punto di un identificatore di settore univoco viene perso.
È giusto farlo e c'è un buon modo per averlo in quel modo senza che si rompa ad un certo punto?