L'algoritmo di Luhn è una scelta molto scarsa per questa applicazione. Stai cercando di applicare un algoritmo facilmente reversibile per uno scopo di sicurezza.
L'algoritmo di Luhn fa una cosa: controlla le cifre. L'unico scopo a cui deve essere applicato è una piccola quantità di controllo degli input, in particolare il controllo degli errori di battitura come cifre mancanti o cifre scambiate. Funziona anche per la convalida dei codici a barre, come il controllo dei codici UPC o del codice 3 di 9 per garantire che il lettore di codici a barre legga correttamente tutte le strisce. Ma quelli sono i limiti di ciò che dovrebbe essere affidato.
Ad esempio, nel tuo caso potrei scorrere da "01212301-0" a "01212301-9" finché uno di questi non mi ha concesso l'accesso. Devo solo provare dieci volte al massimo. Posso farlo facilmente a mano. L'algoritmo di Luhn non può proteggere il tuo sistema.
Per l'uso in un'applicazione di sicurezza, probabilmente richiederebbe uno schema usando un hash crittograficamente sicuro, come SHA-2. Ovviamente, questo tipo di cambiamento comporta un enorme cambiamento nel sistema: un algoritmo Luhn emette un valore compreso tra 0 e 9, mentre un hash crittografico produce un digest di 40 cifre esadecimali. Ma probabilmente non è rilevante, perché sarebbe meglio avere un sistema progettato per eseguire il controllo dell'accesso gestendo tale responsabilità. Un sistema come Active Directory o LDAP è progettato esattamente per abilitare questo tipo di funzionalità in modo sicuro e risolve le insicurezze della soluzione sviluppata in proprio.