Protezione dagli errori / correzione dell'identificatore di risorsa
-
27-10-2019 - |
Domanda
Il destinatario è il mio sito web, il mittente è lo stesso ma il mezzo è rumoroso, un utente. Leggerà un codice alfanumerico di lunghezza 6 e successivamente inserirà lo stesso codice per identificare una risorsa. Un buon uso per un codice di correzione degli errori, ho pensato, e piuttosto che fare la ricerca ho pensato di porre la domanda lì. Oppure potrei farlo nel modo sbagliato, poiché la situazione è piuttosto come inviare un dizionario perfetto insieme a ogni trasmissione.
I requisiti del codice sono semplicemente:
- 6 cifre alfanumeriche, per cominciare finché non finisco, comunque.
- Se l'utente sbaglia, dovrei comunque essere in grado di identificare la risorsa giusta.
- Nessuna risorsa è preferibile a quella sbagliata.
- Facile da codificare o avere librerie gratuite per .net
Qualche suggerimento?
Modifica:
Mi sembra che la metà dei requisiti possa essere soddisfatta scegliendo i codici con saggezza, cioè con una distanza sufficiente tra loro. Questa strategia sembra ancora migliore quando mi rendo conto che più tempo è passato da quando i codici sono stati generati, più è improbabile che vengano utilizzati.
I codici non verranno digitati direttamente nel mio sito web, quindi non posso fornire un feedback immediato. In realtà, possiamo presumere che a meno che non riesca a verificare il codice non riesco nemmeno a identificare l'utente, quindi non posso davvero fornire alcun feedback.
Soluzione
Beh, no, il tuo primo approccio all'ordine dovrebbe essere quello di verificare se l'utente ha inserito il numero corretto. Un errore di digitazione umano di un numero o di una stringa è il 99% del problema. Ciò è ben consolidato nella pratica, la cifra di controllo è utilizzata in molti codici comuni, dove UPC e ISBN sono quelli che vedresti tutti i giorni. Puoi contrassegnarlo, possono riscriverlo di nuovo.
Anche i codici di correzione degli errori sono comuni ma hanno un'applicazione molto diversa. Tradizionalmente è utilizzato nei mezzi di segnalazione digitale , allo scopo di rilevare e correggere errori di bit. Reed-Solomon è il gorilla da cento libbre lì, davvero messo sulla mappa dal CD musicale.
Questo non funziona davvero bene nella pratica con un essere umano, introdurranno almeno 6 bit di dati errati digitando male una chiave. È molto difficile da correggere, dovresti aggiungere moltissimi bit di ridondanza alle lettere adiacenti, rendendo più probabile che il codice venga digitato male. Il modo migliore per ottenere codici leggibili dall'uomo è che il codice abbia senso per un essere umano. Qualcosa che attiva la risposta "sembra sbagliato ". Come un nome, a patto che tu non sia il figlio di Frank Zappa. Ma per il resto la base di codici come lettera-lettera + numeri. Eccetera.