Si une telle chose est vraiment souhaitée, au lieu du hachage, vous pouvez envisager de construire les chaînes à partir d'une valeur d'entrée numérique au moment de l'exécution.
L'avantage est que, comme l'a souligné @Philipp, il est un peu inutile d'essayer de cacher des codes dans l'exécutable si vous pouvez vous attendre à ce qu'ils soient postés sur Internet de toute façon. Haché ou non, le même mot trouvé sur Internet et entré dans le jeu donnera le même hachage et fonctionnera dans les deux sens.
Sauf que ... sauf si le code de quelqu'un d'autre ne fonctionne pas pour vous. Ce que vous pouvez trivialement faire - pas à 100% inviolable mais raisonnablement difficile à contourner pour l'utilisateur moyen. N'importe quel élément aussi simple que le "Générateur de noms elfes en ligne" fera l'affaire (peut être arbitrairement simple, n'a pas vraiment besoin d'un moteur de Markov text gen, extraire 4 à 5 syllabes d'une liste aléatoire est suffisant).
Générez simplement un numéro quelque peu spécifique à l'utilisateur ou à la machine, il n'est même pas nécessaire qu'il soit parfaitement unique ou très inviolable. Quelque chose qui est probablement différent pour la plupart des gens et qui ne changera pas régulièrement, par exemple le nom de réseau de l'ordinateur, l'adresse MAC ou le GUID du lecteur de disque système, peu importe (le numéro de série du GPU peut être un très mauvaisidée puisque les utilisateurs sont susceptibles de mettre à niveau les GPU). Ajoutez à cela le code numérique auquel le code de déverrouillage fait référence et introduisez-le dans votre générateur de mots. Mais soyez prêt à répondre aux demandes d'assistance lorsque les joueurs utilisent deux ordinateurs ou changent de carte réseau (ce qui est inhabituel, mais pas impossible). Ce pourrait être un bon plan de ne générer qu'une seule fois l'identifiant aléatoire et de le stocker avec les paramètres du jeu. De cette façon, au moins, cela ne casse pas les installations existantes sur la même machine si quelque chose change.
Ou vous pouvez simplement utiliser le numéro de série du jeu qui est unique et fonctionnera si l'utilisateur change de matériel (paradoxalement, cela pourrait favoriser le piratage, car les codes de déverrouillage partagés fonctionnent pour les publications en série piratées mais pas pour les clients légitimes!).
Notez qu'empêcher les utilisateurs de tricher n'est pas nécessairement une bonne chose. Dans un jeu hors ligne (c'est-à-dire un jeu non compétitif), il n'y a généralement pas de problème si l'utilisateur triche et obtient les codes quelque part plutôt qu'en jouant. Il se trompe seulement. On s'en fout.
D'autre part, se mettre trop dans le droit chemin s'ils veulent vraiment tricher est une excellente occasion de faire chier complètement les clients qui paient.
Alors ... avant de faire quelque chose de cette façon, réfléchissez bien si vous le voulez vraiment et ce que vous voulez. Il est fort possible que disposer de chaînes lisibles par l'homme (ou rendu trivialement "illisible" avec xor) soit suffisant et même préférable.