查看: 66226|回复: 91

unity3d 数据加/解密

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2014-11-5 18:28:15 | 显示全部楼层 |阅读模式
现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。

好了 话不多说直接上代码:

  1. [/font]using System.Collections;
  2. using System.Text;
  3. using System.Security.Cryptography;
  4. using System;
  5. [font=黑体]//
  6. //                  _ooOoo_
  7. //                 o8888888o
  8. //                 88" . "88
  9. //                 (| -_- |)
  10. //                 O\  =  /O
  11. //              ____/`---'\____
  12. //            .'  \\|     |//  `.
  13. //          /  \\|||  :  |||//  \
  14. //          /  _||||| -:- |||||-  \
  15. //          |   | \\\  -  /// |   |
  16. //          | \_|  ''\---/''  |   |
  17. //          \  .-\__  `-`  ___/-. /
  18. //        ___`. .'  /--.--\  `. . __
  19. //     ."" '<  `.___\_<|>_/___.'  >'"".
  20. //    | | :  `- \`.;`\ _ /`;.`/ - ` : | |
  21. //    \  \ `-.   \_ __\ /__ _/   .-` /  /
  22. //[/align]=====`-.____`-.___\_____/___.-`____.-'======
  23. //                  `=---='
  24. //
  25. //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  26. //          佛祖保佑       永无Bug
  27. //          快加工资       不改需求
  28. //
  29. public class ADDJIEMI : MonoBehaviour [/font][font=黑体]{
  30. public UIInput _input;
  31. //获取输入框的值
  32. private string inputText;
  33. //被加密内容
  34. private string strEncryption;
  35. private string strkeyValue;
  36. void Start()
  37. {
  38. //加密和解密采用相同的key,可以任意数字,但是必须为32位
  39. strkeyValue = "12345678901234567890198915689039";
  40. }
  41. public void encryptionClick()
  42. {
  43. inputText = _input.value;
  44. strEncryption=encryptionContent(inputText, strkeyValue);
  45. Debug.Log(strEncryption);
  46. }
  47. public void decipherClick()
  48. {
  49. inputText = decipheringContent(strEncryption, strkeyValue);
  50. Debug.Log(inputText);
  51. }
  52. /// <summary>
  53. /// 内容加密
  54. /// </summary>
  55. /// <param name="ContentInfo要加密内容</param>
  56. /// <param name="strkeykey值</param>
  57. /// <returns></returns>
  58. public string encryptionContent(string ContentInfo,string strkey)
  59. {
  60. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
  61. RijndaelManaged encryption = new RijndaelManaged();
  62. encryption.Key = keyArray;
  63. encryption.Mode = CipherMode.ECB;
  64. encryption.Padding = PaddingMode.PKCS7;
  65. ICryptoTransform cTransform = encryption.CreateEncryptor();
  66. byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);
  67. byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
  68. return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  69. }

  70. /// <summary>
  71. /// 内容解密
  72. /// </summary>
  73. /// <param name="encryptionContent被加密内容</param>
  74. /// <param name="strkeykey值</param>
  75. /// <returns></returns>
  76. public string decipheringContent(string encryptionContent,string strkey)
  77. {
  78. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
  79. RijndaelManaged decipher = new RijndaelManaged();
  80. decipher.Key = keyArray;
  81. decipher.Mode = CipherMode.ECB;
  82. decipher.Padding = PaddingMode.PKCS7;
  83. ICryptoTransform cTransform = decipher.CreateDecryptor();
  84. byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);
  85. byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
  86. return UTF8Encoding.UTF8.GetString(resultArray);
  87. }
  88. }
复制代码
使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。

注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件  在此就不详述了undefined

里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果
unity3d 数据加/解密

通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。

再看点击解密后的结果
unity3d 数据加/解密

这样就把刚才生成的乱码,通过解密方法,还原了哟。


其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦

是不是既方便又安全啊 ,是的话就点个”“呗!

还有 服务器与客户端数据交互的时候 也可以使用哟 至少我是这样用的 哈哈哈

好啦 ,上面就是我对数据保护的方法,如果大家还有更好的方式,求赐教


回复

使用道具 举报

xbit 该用户已被删除
发表于 2014-12-28 02:51:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

woaiwojia6188 该用户已被删除
发表于 2014-12-28 02:52:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1230

帖子

3932

积分

vip会员

Rank: 1

积分
3932
发表于 2015-4-5 21:32:18 来自手机 | 显示全部楼层
是爷们的娘们的都帮顶!大力支持
回复 支持 反对

使用道具 举报

0

主题

1256

帖子

4010

积分

vip会员

Rank: 1

积分
4010
发表于 2015-4-7 09:44:09 来自手机 | 显示全部楼层
介是神马?!!
回复 支持 反对

使用道具 举报

穿过黑夜 该用户已被删除
发表于 2015-4-10 13:45:18 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1282

帖子

3911

积分

vip会员

Rank: 1

积分
3911
发表于 2015-4-11 13:08:52 来自手机 | 显示全部楼层
hao内容,路过为证。
回复 支持 反对

使用道具 举报

0

主题

1243

帖子

3978

积分

vip会员

Rank: 1

积分
3978
发表于 2015-4-11 19:26:09 来自手机 | 显示全部楼层
鄙视楼下的顶帖没我快,哈哈
回复 支持 反对

使用道具 举报

0

主题

1352

帖子

4108

积分

vip会员

Rank: 1

积分
4108
发表于 2015-4-12 15:39:31 来自手机 | 显示全部楼层
确实不错,顶先
回复 支持 反对

使用道具 举报

0

主题

1241

帖子

3932

积分

vip会员

Rank: 1

积分
3932
发表于 2015-4-13 17:31:03 来自手机 | 显示全部楼层
好资源,收藏了。。。
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部