La tarjeta de identificación electrónica austriaca se basa en los llamados identificadores de sector. Por ejemplo, un hospital puede identificar a una persona obteniendo un ID de sector para esa persona, que se calcula aproximadamente de la siguiente manera:
sha1(personalId + "+" + prefix + sectorId); // prefix is constant and irrelevant
¿Es eso una buena idea? Creo que la posibilidad de colisión, por pequeña que sea, representa un riesgo.
En las tablas hash, cuando hay una colisión, tiene otros medios para establecer la igualdad, pero con las claves primarias no puede tener dos que sean idénticos. Eso se puede evitar con una clave compuesta, pero luego se pierde el punto de un identificador de sector único.
¿Está bien hacer eso y hay una buena manera de hacerlo sin que se rompa en algún momento?
personalId
+ sectorID
ya servirá como un identificador único, y como no hay nada allí como una contraseña que deba ocultarse, el hash parece no tener ningún uso real. ¿Qué me estoy perdiendo? ¿O el "personID" es algo secreto?