zoukankan      html  css  js  c++  java
  • unity3d 数据加/解密

    http://www.manew.com/thread-21682-1-1.html

    http://www.manew.com/thread-21682-1-1.html

    现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
    可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
    如何去保护?
    相信每一位程序都有自己独特的见解。
    因此,我在此分享下自己对数据加/解密的处理方式。

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

    [/font]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.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦

  • 相关阅读:
    js怎么把一个数组里面的值作为一个属性添加到另一数组包含的对象里(小程序)
    h5调用手机相册摄像头以及文件夹
    tomcat7之性能优化
    数组和集合详解及项目中的运用
    Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
    JSON解析及数据库操作实战篇
    jdk及tomcat的安装
    append、replace、replaceAll、indexof、lastIndexOf、substring、split、match的用法
    Spring JdbcTemplate详解及项目中的运用
    JSON解析
  • 原文地址:https://www.cnblogs.com/ye-ming/p/7985194.html
Copyright © 2011-2022 走看看