Se una cosa del genere è davvero desiderata, quindi invece di eseguire l'hashing, potresti considerare di costruire le stringhe da un valore di input numerico in fase di esecuzione.
Il vantaggio è che, come sottolineato da @Philipp, è in qualche modo inutile cercare di nascondere i codici nell'eseguibile se ci si può aspettare che vengano comunque pubblicati su Internet. Tratteggiato o meno, la stessa parola trovata su Internet e inserita nel gioco darà lo stesso hash e funzionerà in entrambi i modi.
Tranne ... tranne se il codice di qualcun altro non funziona per te. Cosa che puoi fare banalmente - non al 100% a prova di manomissione ma ragionevolmente difficile da aggirare per l'utente medio. Qualunque cosa semplice come farà il "Generatore di nomi di elfi online" (può essere arbitrariamente semplice, in realtà non ha bisogno di un gran motore di testo markov, estrarre 4-5 sillabe da un elenco casuale è abbastanza buono).
Basta generare un numero un po 'specifico dell'utente o specifico della macchina, non deve nemmeno essere perfettamente unico o molto resistente alle manomissioni. Qualcosa che è probabilmente diverso per la maggior parte delle persone e che difficilmente cambierà regolarmente, ad esempio il nome di rete del computer, l'indirizzo MAC o il GUID dell'unità disco di sistema, qualunque cosa (il numero di serie della GPU potrebbe essere un pessimoidea dal momento che è probabile che gli utenti aggiornino le GPU). Aggiungi a quello il codice numerico a cui fa riferimento il codice di sblocco e inseriscilo nel tuo generatore di parole. Preparati a rispondere alle domande di supporto quando i giocatori usano due computer o cambiano la loro scheda di rete (cosa insolita, ma non impossibile). Potrebbe essere un buon piano generare l'ID casuale una sola volta e memorizzarlo con le impostazioni del gioco. In questo modo, almeno non interrompe le installazioni esistenti sulla stessa macchina se qualcosa cambia.
Oppure, potresti semplicemente usare il numero di serie del gioco che è unico e funzionerà se l'utente cambia hardware (ironicamente, tuttavia, ciò potrebbe promuovere la pirateria poiché i codici di sblocco condivisi funzionano per i serial piratati ma non per i clienti legittimi!).
Nota che impedire agli utenti di barare non è necessariamente una buona cosa. In un gioco offline (ovvero un gioco non competitivo) di solito non è un problema se l'utente imbroglia e ottiene i codici da qualche parte piuttosto che dal giocare. Si sta solo tradendo. Che importa.
D'altra parte, mettersi troppo sulla loro strada se vogliono davvero imbrogliare è una grande opportunità per far incazzare completamente i clienti paganti.
Quindi ... prima di fare qualcosa in quel modo, pensa attentamente se lo vuoi davvero e cosa vuoi. Molto probabilmente, avere stringhe leggibili dall'uomo (o rese banalmente "illeggibili" con xor) è abbastanza buono e anzi preferibile.