O bilhete de identidade eletrônico austríaco conta com os chamados identificadores de setor. Por exemplo, um hospital consegue identificar uma pessoa obtendo um ID de setor para essa pessoa, calculado aproximadamente da seguinte maneira:
sha1(personalId + "+" + prefix + sectorId); // prefix is constant and irrelevant
Essa é uma boa ideia? Penso que a possibilidade de colisão, por menor que seja, representa um risco.
Nas hashtables, quando há uma colisão, você tem outros meios para estabelecer a igualdade, mas com as chaves primárias, você não pode ter duas idênticas. Isso pode ser contornado por uma chave composta, mas o ponto de um identificador de setor exclusivo é perdido.
Está tudo bem em fazer isso e existe uma boa maneira de fazê-lo dessa maneira sem que ele quebre em algum momento?
personalId
+ sectorID
já servirá como um identificador exclusivo e, como não há nada como uma senha que deve estar oculta, o hash parece não ter uso real. o que estou perdendo? Ou o "personID" é algo secreto?