【Unity】unity3d 数据加/解密

来源:互联网 发布:c语言中随机数怎么写 编辑:程序博客网 时间:2024/06/06 18:31

原文地址 :http://www.manew.com/thread-21682-1-1.html

using System.Collections;using System.Text;using System.Security.Cryptography;using System;[font=黑体]////                  _ooOoo_//                 o8888888o//                 88" . "88//                 (| -_- |)//                 O\  =  /O//              ____/`---'\____//            .'  \\|     |//  `.//          /  \\|||  :  |||//  \//          /  _||||| -:- |||||-  \//          |   | \\\  -  /// |   |//          | \_|  ''\---/''  |   |//          \  .-\__  `-`  ___/-. ///        ___`. .'  /--.--\  `. . __//     ."" '<  `.___\_<|>_/___.'  >'"".//    | | :  `- \`.;`\ _ /`;.`/ - ` : | |//    \  \ `-.   \_ __\ /__ _/   .-` /  ///=====`-.____`-.___\_____/___.-`____.-'======//                  `=---='////^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//          佛祖保佑       永无Bug//          快加工资       不改需求//public class ADDJIEMI : MonoBehaviour [/font][font=黑体]{public UIInput _input;//获取输入框的值private string inputText;//被加密内容private string strEncryption;private string strkeyValue;void Start(){//加密和解密采用相同的key,可以任意数字,但是必须为32位strkeyValue = "12345678901234567890198915689039";}public void encryptionClick(){inputText = _input.value;strEncryption=encryptionContent(inputText, strkeyValue);Debug.Log(strEncryption);}public void decipherClick(){inputText = decipheringContent(strEncryption, strkeyValue);Debug.Log(inputText);}/// <summary>/// 内容加密/// </summary>/// <param name="ContentInfo">要加密内容</param>/// <param name="strkey">key值</param>/// <returns></returns>public string encryptionContent(string ContentInfo,string strkey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);RijndaelManaged encryption = new RijndaelManaged();encryption.Key = keyArray;encryption.Mode = CipherMode.ECB;encryption.Padding = PaddingMode.PKCS7;ICryptoTransform cTransform = encryption.CreateEncryptor();byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);} /// <summary>/// 内容解密/// </summary>/// <param name="encryptionContent">被加密内容</param>/// <param name="strkey">key值</param>/// <returns></returns>public string decipheringContent(string encryptionContent,string strkey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);RijndaelManaged decipher = new RijndaelManaged();decipher.Key = keyArray;decipher.Mode = CipherMode.ECB;decipher.Padding = PaddingMode.PKCS7;ICryptoTransform cTransform = decipher.CreateDecryptor();byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);return UTF8Encoding.UTF8.GetString(resultArray);}}

使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。

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

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


通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。
再看点击解密后的结果


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


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


原创粉丝点击