HI. Bella domanda. Tempo fa, ho avuto l'opportunità di cercare di creare un processo di 'autorizzazione' per alcuni software che ho scritto. Si è rivelato essere un piccolo progetto! Vedete, anche una semplice protezione crittografica è vulnerabile agli attacchi e all'aggiramento. Più elaborata è la soluzione al problema, più problemi sorgono.
Il mio consiglio è di mantenerla semplice. Guardate questo link per alcune buone discussioni: Come creare una chiave di licenza in C# Inoltre, controlla questo progetto su codeproject: Protecting Your Software Using Simple Serial Number/Activation Key Pair
"acquista una soluzione commerciale. Non solo sarà più avanzata..."
Entrambi gli approcci usano una 'chiave' unica per 'attivare' il software o sbloccare le sue caratteristiche. Le chiavi sono semplicemente delle stringhe che hanno un significato per la vostra serratura. La serratura è quel po' di logica intelligente che avete applicato al vostro codice per impedire che le buone caratteristiche diventino utilizzabili fino a quando non sia stata inserita la stringa corretta. La stringa o chiave potrebbe essere legata all'ID della CPU, all'email dell'utente o a qualche altra combinazione di lettere e numeri. La complessità dipende davvero da voi e dalle vostre capacità di codifica.
Il mio consiglio è di leggere l'argomento, provare alcuni dei semplici esempi, poi acquistare una soluzione commerciale. Non solo sarà più avanzata della vostra soluzione (se non altro per il numero di ore uomo investite!) ma sarà anche più complessa e proteggerà dalle basi.
Buona fortuna con il vostro progetto. Cordiali saluti, Robin.