我正在研究一个游戏的概念,它最终将允许通过纯文本共享数据,但我想给用户加密数据的选项,以便其他玩家不能修改它,但是程序/游戏仍然能够读取数据以供其他人使用。那么,我的问题是,是否有一种加密方法,其中游戏/程序有一个主密钥可以解密数据,但用户也可以输入自己的密码作为密钥来修改数据?谢谢您抽时间见我。
发布于 2014-08-19 21:21:37
我将展示一个假设如下的方案:
所以你能做的就是用随机生成的数据密钥加密你的游戏数据。如果您使用GCM操作模式,那么您可以验证数据是否在解密期间也被篡改。此数据密钥本身使用游戏密钥和用户密钥加密(包装)。
现在游戏可以随时访问和更改数据。但是用户需要提供用户密钥。但是,用户只有一个密码,因此我们需要将该密码转换为用户密钥。这样做的方法是使用基于密码的密钥派生函数(如PBKDF2 ),并将输出用作用户密钥(请注意,您需要向PBKDF2提供创建用户帐户时生成和存储的随机盐)。

最后,你可以让事情变得简单或艰难。一个非常有趣的特性是让用户也签署游戏数据;在这种情况下,游戏可以拒绝被篡改的游戏数据。
单独加密游戏数据值也可能是个好主意,您可以使用特定数据标识符的散列作为加密/解密的初始化向量。
https://crypto.stackexchange.com/questions/18683
复制相似问题