Se uma coisa dessas for realmente desejada, em vez de usar hash, considere construir as strings a partir de um valor de entrada numérico no tempo de execução.
A vantagem é que, como apontado pelo @Philipp, é um pouco inútil tentar ocultar códigos no executável se você puder esperar que eles sejam publicados na Internet de qualquer maneira. Com hash ou não, a mesma palavra encontrada na internet e inserida no jogo fornecerá o mesmo hash e funcionará de qualquer maneira.
Exceto ... exceto se o código de outra pessoa não funcionar para você. O que você pode fazer de maneira trivial - não 100% à prova de violações, mas é razoavelmente difícil de solucionar para o usuário comum. Qualquer coisa tão simples quanto o "gerador de nomes Elven Online" fará (pode ser arbitrariamente simples, realmente não precisa de muito mecanismo de geração de texto markov, puxar 4-5 sílabas de uma lista aleatória é bom o suficiente).
Basta gerar um número um tanto específico do usuário ou específico da máquina, ele nem precisa ser perfeitamente exclusivo ou muito resistente a violações. Algo que provavelmente é diferente para a maioria das pessoas e provavelmente não muda regularmente, por exemplo, o nome da rede do computador, o endereço MAC ou o GUID da unidade de disco do sistema, seja qual for (o número de série da GPU pode ser muito ruimidéia, pois os usuários provavelmente atualizarão as GPUs). Acrescente a isso o código numérico ao qual o código de desbloqueio se refere e alimente-o no seu gerador de palavras. Mas esteja preparado para responder a perguntas de suporte quando os jogadores usam dois computadores ou alteram sua placa de rede (o que é incomum, mas não impossível). Pode ser um bom plano gerar o ID aleatório apenas uma vez e armazená-lo com as configurações do jogo. Dessa forma, pelo menos não interrompe as instalações existentes na mesma máquina se algo mudar.
Ou então, você pode apenas usar o número de série do jogo, que é único e funcionará se o usuário alterar o hardware (ironicamente, no entanto, isso pode promover a pirataria, pois os códigos de desbloqueio compartilhados funcionam para seriais pirateados, mas não para clientes legítimos!).
Observe que impedir os usuários de trapacear não é necessariamente uma coisa boa. Em um jogo offline (ou seja, não competitivo), normalmente não há problema se o usuário trapaceia e obtém os códigos de algum lugar, em vez de jogar. Ele está apenas se enganando. Quem se importa.
Por outro lado, atrapalhar demais se realmente deseja trapacear é uma ótima oportunidade para irritar completamente os clientes pagantes.
Então ... antes de fazer algo dessa maneira, pense muito bem se você realmente quer isso e o que deseja. Possivelmente, ter cordas legíveis por humanos (ou trivialmente tornadas "ilegíveis" com xor) é bom o suficiente e, de fato, preferível.