我一直想使用加密来防止用户在程序本身之外弄清楚程序中的内容。就像用户可能会发现,在游戏数据中浏览时,从未在游戏中使用过的纹理将成为某种复活节彩蛋的一部分。如果在网上发布,这可能会破坏所有人的利益。
想象一下一个秘密房间,玩家必须在游戏室的安全门上按下正确的数字,如果正确,它将生成正确的解密密钥,然后解密该关卡的一部分并打开门。因此,由于实际上并没有存储密钥,因此即使在浏览游戏数据时也无法访问复活节彩蛋,它是根据用户输入生成的。
这是我想象中的另一个例子。我有一个益智游戏,假设有20个关卡,每个关卡都使用不同的密钥加密。我没有在程序中直接存储解密密钥,从而使某人可以反编译该程序并找到它,而是根据上一个难题的解决方案生成了加密/解密密钥。这样,即使在浏览游戏数据时,玩家也必须在获得有关下一关的任何信息之前实际找出难题。
考虑到谜题解决方案的数量可能少于解密密钥的数量,玩家如果知识渊博,就可以“轻松”进行暴力破解。这实际上是难题的复杂性,在这里不是很重要。虽然我确实在这里发布了有关它的答案
今天有没有做过这样的程序/游戏?在他们的游戏中存储加密内容?如果不是,为什么呢?在商店或国家/地区是否有很多法规和规章制度?有人看到我缺少的明显陷阱吗?忽略诸如用户体验之类的东西,这个主意在我看来似乎很合理,让我很好奇为什么以前从未见过。
编辑:可能不清楚我在说什么,所以这是一个更具体的示例。
假设我有一个函数,它接受20个字符的字符串并生成一个对称密钥,我可以使用该密钥对游戏中的某些内容进行加密/解密。用户获取该内容的唯一方法是知道这20个字符并生成相同的密钥。该密钥从不直接存储,而是根据用户输入即时生成的。这些角色将隐藏在游戏中,可能是书籍,与NPC的对话,甚至可能不在游戏盒背面。
因此,尝试使用2 * 10 ^ 28种可能的组合,人们更有可能会以预期的方式找到内容,而不是通过浏览游戏数据来找到内容。
编辑2:在将内容发送给消费者之前,将使用任意密钥对内容进行加密。此键显然不会随游戏一起提供。给定一系列基于钥匙的线索,他或她将不得不以某种方式将钥匙重新拼凑在一起,并且这些线索在整个游戏或其他地方都是隐藏的。但是,该系统对用户是透明的,因为除非您实际浏览游戏数据,否则您将不知道内容是加密的。
很多人提到,这样做的局限性在于它有一个明显的缺点。一旦一个人弄清楚了,他/她就可以与其他人共享它(如果不是密钥/解决方案,则可以是内容本身)。但是,如果您打算保密,以至于一个人无法解决问题,而人们必须共同解决它,或者您担心自己的复活节彩蛋被隐藏(设计使然),以至于无法解决它。更有可能有人会在代码中找到它,而不是通过玩游戏。然后我认为这可能很好。
我个人建议每场游戏只能使用一次,并且仅用于不影响核心游戏玩法的事物,例如复活节彩蛋,秘密结局。任何谜题都必须如此复杂或被很好地隐藏起来,以使人们放慢脚步,以使加密内容值得,如果这个谜题阻碍了人们的进步,那么没人可能会玩得开心。