是否有解决以下问题的行业标准:
故事; 我有一个程序(=>游戏),它将状态(=> level,..)保存在xml文件中; 这个状态不应该是用户可编辑的; 我想阻止人们编写可修补我的xml和程序状态的补丁软件.
您想要保护您的xml文件.您可以通过加密来完成此操作.不过你怎么用钥匙?
因为有人可以随时进行逆向工程(打开你的dll)阅读密钥......?
public static string Encrypt (string toEncrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes ("12345678901234567890123456789012");
// 256-AES key
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes (toEncrypt);
RijndaelManaged rDel = new RijndaelManaged ();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
// http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
rDel.Padding = PaddingMode.PKCS7;
// better lang support
ICryptoTransform cTransform = rDel.CreateEncryptor ();
byte[] resultArray = cTransform.TransformFinalBlock (toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String (resultArray, 0, resultArray.Length);
}
public static string Decrypt (string toDecrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes ("12345678901234567890123456789012");
// AES-256 key
byte[] toEncryptArray = Convert.FromBase64String (toDecrypt);
RijndaelManaged rDel = new RijndaelManaged ();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
// http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
rDel.Padding = PaddingMode.PKCS7;
// better lang support
ICryptoTransform cTransform = rDel.CreateDecryptor ();
byte[] resultArray = cTransform.TransformFinalBlock (toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString (resultArray);
}
Run Code Online (Sandbox Code Playgroud)
编辑:app是100%客户端.
Eri*_*ert 10
我有一个程序(=>游戏),它将状态(=> level,..)保存在xml文件中; 这个状态不应该是用户可编辑的; 我想阻止人们编写可修补我的xml和程序状态的补丁软件.您可以通过加密来完成此操作.不过你怎么用钥匙?因为有人可以随时进行逆向工程(打开你的dll)并阅读密钥.
你已经产生了一个令人信服的论据,即你想做的事情是不可能的.你的论点是正确的.
安全系统的目的是保护用户的攻击,而不是保护用户的数据从用户本身.
以这种方式思考:游戏是一个可以编辑状态的程序.用户可以运行游戏.因此,用户可以运行可以编辑状态的程序.您甚至不需要考虑密钥管理,因为整个方案根本不可能.您不能同时要求用户能够运行更改状态的程序并同时禁止它.
如果你真的希望游戏状态不受用户保护,那么必须提供的是:不允许用户运行游戏.相反,游戏必须在您拥有的服务器上运行,并且用户运行与服务器通信的客户端.然后,服务器负责确定客户端是否是敌对的,并确定游戏状态是什么.
由于游戏现在在您拥有的服务器上运行,并将状态保存到您拥有的服务器,因此您知道用户不会编辑状态,因为他们无法运行执行此操作的程序.
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |