J'avais eu l'idée d'utiliser le cryptage pour empêcher les utilisateurs de trouver du contenu dans mon programme en dehors du programme lui-même. Comme les utilisateurs peuvent trouver des textures jamais utilisées dans le jeu destinées à faire partie d'une sorte d'oeuf de Pâques lors de la consultation des données du jeu. Cela peut par exemple le ruiner pour tout le monde s'il est posté en ligne.
Imaginez une pièce secrète dans laquelle le joueur doit composer les numéros corrects sur une porte de sécurité du jeu. Ce dernier, s'il est correct, devrait générer la clé de déchiffrement correcte, puis déchiffrer cette partie du niveau et ouvrir la porte. Rendre l'œuf de Pâques autrement inaccessible même lorsque vous parcourez les données du jeu, car la clé n'est pas réellement stockée, elle est générée à partir des entrées de l'utilisateur.
Voici un autre exemple de ce que j'imaginais. J'ai un jeu de réflexion avec 20 niveaux, chacun crypté à l'aide d'une clé différente. Au lieu de stocker la clé de déchiffrement dans le programme en permettant à quelqu'un de le décompiler et de le trouver, je génère la clé de chiffrement / déchiffrement en fonction de la solution du puzzle précédent. De cette façon, le joueur devrait résoudre le casse-tête avant d’obtenir des informations sur le niveau suivant, même en regardant à travers les données du jeu.
Le joueur, s'il en a connaissance, pourrait le forcer "facilement", étant donné que le nombre de solutions de casse-tête est probablement inférieur au nombre de clés de déchiffrement. C'est vraiment une question de complexité du casse-tête et ce n'est pas très important ici. Bien que j'ai posté une réponse à ce sujet ici
Y at-il des programmes / jeux aujourd'hui qui ont fait quelque chose comme ça? Stocker du contenu crypté dans leurs jeux? Et sinon pourquoi? Existe-t-il beaucoup de règles et de réglementations à ce sujet, que ce soit au niveau du magasin ou du pays? Quelqu'un voit-il des pièges évidents qui me manquent? Ignorant des choses comme l'expérience utilisateur, l'idée me semble bonne et me rend curieux de savoir pourquoi je ne l'ai pas vu auparavant.
Edit : Il se peut que ce que je dis ne soit pas clair, alors voici un exemple plus concret.
Disons que j'ai une fonction qui prend une chaîne de 20 caractères et génère une clé symétrique que je peux utiliser pour chiffrer / déchiffrer du contenu dans le jeu. La seule façon pour l'utilisateur d'accéder à ce contenu est de connaître ces 20 caractères et de générer la même clé. Cette clé n'est jamais directement stockée et est générée à la volée en fonction des entrées de l'utilisateur. Ces personnages seraient cachés dans le jeu dans ce qui pourrait être des livres, un dialogue avec des PNJ, peut-être même en dehors du jeu, même au dos de la boîte.
Donc, avec 2 * 10 ^ 28 combinaisons possibles à essayer, il serait probablement plus probable que les gens trouvent le contenu de la manière prévue plutôt qu'en consultant les données du jeu.
Éditer 2 : le contenu en question serait chiffré avec une clé arbitraire et secrète avant d' être expédié au consommateur. Cette clé ne sera évidemment pas livrée avec le jeu. Il ou elle devrait en quelque sorte reconstituer la clé grâce à une série d’indices basés sur la clé et qui sont cachés tout au long du jeu ou ailleurs. Ce système serait toutefois transparent pour l'utilisateur car vous ne sauriez pas que le contenu est crypté à moins que vous ne parcouriez les données du jeu.
Comme beaucoup l'ont mentionné, cela présente un inconvénient évident en ce sens que son cas d'utilisation est limité. Une fois qu'une seule personne l'a compris, il / elle peut le partager avec tout le monde, sinon la clé / solution, puis le contenu lui-même. Toutefois, si votre intention est de garder quelque chose de si secret qu'une seule personne ne devrait pas être capable de le résoudre et que les gens doivent travailler ensemble pour le résoudre, ou vous avez peur que votre œuf de Pâques soit si bien caché (à dessein) qu'il Il est plus probable que quelqu'un le trouve dans le code plutôt que par le jeu. Ensuite, je pense que cela pourrait très bien fonctionner.
Personnellement, je recommanderais de ne l'utiliser qu'une fois par partie et uniquement pour des choses qui n'affectent pas le jeu, par exemple les oeufs de Pâques, une fin secrète. Chaque casse-tête devrait être si compliqué ou si bien caché pour ralentir suffisamment les gens pour que le cryptage du contenu en vaille la peine. Si ce casse-tête empêchait les gens de progresser, personne ne s'amusait probablement.