ソースセットよりも短い固有の PIN を作成できないという上記の正しいコメントにも関わらず (定義上、決して固有ではないハッシュに要約されます)、「複製できないコード」を意味していると思います。部外者による電話番号であり、電話番号と PIN が与えられれば、関連性があることを証明できますが、同じ PIN が別の電話番号で使用された場合にも有効である可能性があることを受け入れます。」
と仮定すると、最も簡単な解決策は、電話番号からソルト ハッシュを作成することです。サンプル擬似コード:
static uniqueHash = '9t45uufg92dit093ik,96igm0v9m6i09im09i309disl54923';
function createPinFromPhone(string phonenumber)
{
string pin = '';
do {
hash = md5(phonenumber+uniqueHash);
pin += extractNumbersFromString(hash);
phonenumber = pin+hash;
}
while(pin.length < 6)
return pin.subString(0, 6);
}
これは、同じ電話番号から常に同じ PIN コードを返す関数の (大まかな) 例であり、一意の秘密鍵を使用することで部外者が決して複製することはできません。理論的にはエントロピーの問題が発生する可能性がありますが、現実的にはこの規模ではありません。