unity3d 数据加/解密
2015-05-25 17:14
791 查看
现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。
好了 话不多说直接上代码:
[C#] 纯文本查看 复制代码
使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。
注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件 在此就不详述了
里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果
通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。
再看点击解密后的结果
2[}73SNWBXHWI%O$B4~})WH.jpg(50.84 KB, 下载次数: 6)
下载附件 保存到相册
2014-8-22 10:56 上传
这样就把刚才生成的乱码,通过解密方法,还原了哟。
其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦
是不是既方便又安全啊 ,是的话就点个”赞“呗!
还有 服务器与客户端数据交互的时候 也可以使用哟 至少我是这样用的 哈哈哈
好啦 ,上面就是我对数据保护的方法,如果大家还有更好的方式,求赐教
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。
好了 话不多说直接上代码:
本帖隐藏的内容
[C#] 纯文本查看 复制代码<span style="font-family:黑体;word-wrap:break-word"></span>using System.Collections;<br style="word-wrap:break-word" /> using System.Text;<br style="word-wrap:break-word" /> using System.Security.Cryptography;<br style="word-wrap:break-word" /> using System;<br style="word-wrap:break-word" /><span style="font-family:黑体;word-wrap:break-word"><br style="word-wrap:break-word" /> public class ADDJIEMI : MonoBehaviour </span><span style="font-family:黑体;word-wrap:break-word">{<br style="word-wrap:break-word" /> public UIInput _input;<br style="word-wrap:break-word" /> //获取输入框的值<br style="word-wrap:break-word" /> private string inputText;<br style="word-wrap:break-word" /> //被加密内容<br style="word-wrap:break-word" /> private string strEncryption;<br style="word-wrap:break-word" /> private string strkeyValue;<br style="word-wrap:break-word" /> void Start()<br style="word-wrap:break-word" /> {<br style="word-wrap:break-word" /> //加密和解密采用相同的key,可以任意数字,但是必须为32位<br style="word-wrap:break-word" /> strkeyValue = "12345678901234567890198915689039";<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> public void encryptionClick()<br style="word-wrap:break-word" /> {<br style="word-wrap:break-word" /> inputText = _input.value;<br style="word-wrap:break-word" /> strEncryption=encryptionContent(inputText, strkeyValue);<br style="word-wrap:break-word" /> Debug.Log(strEncryption);<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> public void decipherClick()<br style="word-wrap:break-word" /> {<br style="word-wrap:break-word" /> inputText = decipheringContent(strEncryption, strkeyValue);<br style="word-wrap:break-word" /> Debug.Log(inputText);<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> /// <summary><br style="word-wrap:break-word" /> /// 内容加密<br style="word-wrap:break-word" /> /// </summary><br style="word-wrap:break-word" /> /// <param name="ContentInfo">要加密内容</param><br style="word-wrap:break-word" /> /// <param name="strkey">key值</param><br style="word-wrap:break-word" /> /// <returns></returns><br style="word-wrap:break-word" /> public string encryptionContent(string ContentInfo,string strkey)<br style="word-wrap:break-word" /> {<br style="word-wrap:break-word" /> byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);<br style="word-wrap:break-word" /> RijndaelManaged encryption = new RijndaelManaged();<br style="word-wrap:break-word" /> encryption.Key = keyArray;<br style="word-wrap:break-word" /> encryption.Mode = CipherMode.ECB;<br style="word-wrap:break-word" /> encryption.Padding = PaddingMode.PKCS7;<br style="word-wrap:break-word" /> ICryptoTransform cTransform = encryption.CreateEncryptor();<br style="word-wrap:break-word" /> byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);<br style="word-wrap:break-word" /> byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);<br style="word-wrap:break-word" /> return Convert.ToBase64String(resultArray, 0, resultArray.Length);<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> <br style="word-wrap:break-word" /> /// <summary><br style="word-wrap:break-word" /> /// 内容解密<br style="word-wrap:break-word" /> /// </summary><br style="word-wrap:break-word" /> /// <param name="encryptionContent">被加密内容</param><br style="word-wrap:break-word" /> /// <param name="strkey">key值</param><br style="word-wrap:break-word" /> /// <returns></returns><br style="word-wrap:break-word" /> public string decipheringContent(string encryptionContent,string strkey)<br style="word-wrap:break-word" /> {<br style="word-wrap:break-word" /> byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);<br style="word-wrap:break-word" /> RijndaelManaged decipher = new RijndaelManaged();<br style="word-wrap:break-word" /> decipher.Key = keyArray;<br style="word-wrap:break-word" /> decipher.Mode = CipherMode.ECB;<br style="word-wrap:break-word" /> decipher.Padding = PaddingMode.PKCS7;<br style="word-wrap:break-word" /> ICryptoTransform cTransform = decipher.CreateDecryptor();<br style="word-wrap:break-word" /> byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);<br style="word-wrap:break-word" /> byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);<br style="word-wrap:break-word" /> return UTF8Encoding.UTF8.GetString(resultArray);<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> }<br style="word-wrap:break-word" /> </span>
使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。
注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件 在此就不详述了
里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果
通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。
再看点击解密后的结果
2[}73SNWBXHWI%O$B4~})WH.jpg(50.84 KB, 下载次数: 6)
下载附件 保存到相册
2014-8-22 10:56 上传
这样就把刚才生成的乱码,通过解密方法,还原了哟。
其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦
是不是既方便又安全啊 ,是的话就点个”赞“呗!
还有 服务器与客户端数据交互的时候 也可以使用哟 至少我是这样用的 哈哈哈
好啦 ,上面就是我对数据保护的方法,如果大家还有更好的方式,求赐教
相关文章推荐
- unity3d 数据加/解密
- unity3d 数据加/解密
- 【Unity】unity3d 数据加/解密
- Unity3D保存数据到Json(加密、解密)
- Unity3D中的socket通信之九(账号密码/数据传输过程中的加密解密)
- unity3d-解密加密数据
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- IOS 使用AES/ECB/PKCS7Padding 加密、解密数据
- JS使用插件cryptojs进行加密解密数据实例
- web.config/app.config敏感数据加/解密的二种方法
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
- Unity3d使用PlayerPrefs类实现数据存档
- 使用cryptojs加密/解密数据
- T-SQL问题解决集锦——数据加解密
- Unity3D修改模型的网格数据
- 数据结构(java语言描述)串与数组——文件加解密
- 加密解密---------->用新的高级加密标准(AES)保持你的数据安全
- Unity3D 游戏引擎之游戏场景的切换与持久化简单数据的储存
- 【BLE-CC2640】CC2640之数据加密与解密
- 爱测未来移动-再谈Android数据监控_iTest优化解密