当前位置: 首页 > news >正文

网站开发中 即将上线asp.net网站建设项目实战资料

网站开发中 即将上线,asp.net网站建设项目实战资料,网站建设同行抄袭,网页qq表情前言 在Unity3d工程中经常有需要将一些文件放到本地项目中#xff0c;诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下#xff0c;在程序发布后这些文件基本是对用户可见的状态#xff0c;造成信息泄露#xff0c;甚至有不法分子会利用这些…前言 在Unity3d工程中经常有需要将一些文件放到本地项目中诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下在程序发布后这些文件基本是对用户可见的状态造成信息泄露甚至有不法分子会利用这些信息进行一定的破坏行为。在这种背景下是很有必要将本地的一些文件进行加密处理再存储然后加载后进行解密这就能规避本地文件带来的风险。而本文就是围绕这个功能实现的一个插件能快速的对文件进行加密和解密修改。只需要进行简单的配置然后选中文件进行加密即可实现该功能。 该项目的Unity3d版本为2020.3.28f1c1 Personal注意如果版本差异太大可能会无法正确打开使用。 效果 加密配置 加密前后对比 自定义加密 批量直接加密 加密至StreamingAssets 自定义解密 批量解密 实现 加密的核心功能实现采用的是加密转换的基本操作根据加密的配置Key和Code进行加密操作这些配置在保存/修改时会进行修改存储。而Unity3d工程中的新增菜单和窗口采用Unity编辑器拓展MenuItem和EditorWindow来实现。 配置实现 在顶部的菜单栏中新建一个菜单选项“Tools 加密配置窗口” [MenuItem(Tools/加密配置窗口)] public static void ShowRegisterWindow() {EncoderConfigWind wind (EncoderConfigWind)EditorWindow.GetWindow(typeof(EncoderConfigWind)); }点击后打开编辑器窗口这个窗口EncoderConfigWind是继承了Unity的编辑器窗口EditorWindow。 然后编写当渲染UI的时候调用OnGUI函数绘制出配置窗口的明细 private void OnGUI(){GUILayout.BeginVertical(new GUILayoutOption[0]);GUILayout.Space(10f);GUILayout.Label(加密文件配置, new GUILayoutOption[0]);GUILayout.Space(10f);GUILayout.Label(加密KEY, new GUILayoutOption[0]);this.TempKey EditorGUILayout.TextArea(this.TempKey, new GUILayoutOption[] { GUILayout.MinHeight(50f) });GUILayout.Space(10f);GUILayout.Label(加密Code, new GUILayoutOption[0]);this.LegalIVCode EditorGUILayout.TextArea(this.LegalIVCode, new GUILayoutOption[] { GUILayout.MinHeight(50f) });GUILayout.Space(10f);GUILayout.Label(加密文件后缀, new GUILayoutOption[0]);this.EncodeSuffix EditorGUILayout.TextArea(this.EncodeSuffix, new GUILayoutOption[] { GUILayout.MinHeight(20f) });GUILayout.Space(10f);GUILayout.Label(解密文件后缀, new GUILayoutOption[0]);this.DecodeSuffix EditorGUILayout.TextArea(this.DecodeSuffix, new GUILayoutOption[] { GUILayout.MinHeight(20f) });GUILayout.Space(10f);if (GUILayout.Button(保存配置, new GUILayoutOption[0])){this.SaveConfigs(this.TempKey, this.LegalIVCode, this.EncodeSuffix, this.DecodeSuffix);}GUILayout.Space(10f);if (GUILayout.Button(获取帮助, new GUILayoutOption[0])){Process.Start(https://blog.csdn.net/qq_33789001);}GUILayout.EndVertical();}如上的代码能绘制出下面的窗口 其主要的作用就是在打开配置窗口后绘制出窗体在窗体中提供Key、Code、默认加密/解密文件的后缀等输入框点击保存配置按钮后会将这些输入信息进行保存通过File.WriteAllBytes函数写入到Resources下的配置文件中去示例代码如下 File.WriteAllBytes(path /Key.txt, keybytes);加密实现 加密的实现是通过选择Assets窗口中的文件来进行加密所有菜单的选项都采用了[MenuItem(“Assets/***”)]的形式进行。为了满足大部分的应用场景提供了多种操作方式单一自定义加密、批量直接加密和批量的加密到StreamAssets和Resources的方式等所以写了一个枚举进行操作 public enum EncodeType { direct 1,custom 2,steamingassets 3,resources 4,custompath 5 }在Assets窗口中新建了如下的菜单选项并通过加密EncodeType 的枚举值不同的方式进行区分 [MenuItem(Assets/加密文件/直接加密(批量))]private static void DoEncodeFileDir(){DoEncodeFiles(EncodeType.direct);}[MenuItem(Assets/加密文件/选路径加密(批量))]private static void DoEncodeFileSelPath(){DoEncodeFiles(EncodeType.custompath);}[MenuItem(Assets/加密文件/放入StreamAssets(批量))]private static void DoEncodeFileSa(){DoEncodeFiles(EncodeType.steamingassets);}[MenuItem(Assets/加密文件/放入Resources(批量))]private static void DoEncodeFileRes(){DoEncodeFiles(EncodeType.resources);}[MenuItem(Assets/加密文件/自定义加密(单一))]private static void DoEncodeFileCustom(){DoEncodeFiles(EncodeType.custom);}点击加密选项后根据选项和选择的文件进行加密处理样例代码如下 string[] strs Selection.assetGUIDs;string path AssetDatabase.GUIDToAssetPath(strs[0]);string suffix (Resources.Load(EncodeFile/DeSuffix) as TextAsset).text;string buildPath EditorUtility.SaveFilePanel(请选择解析保存的路径, GetPrePath(path), GetFileName(path), suffix);string spath buildPath;if (!string.IsNullOrEmpty(path)){string text File.ReadAllText(path);string decode Decrypt(text);//Debug.Log(spath);File.WriteAllText(spath, decode);AssetDatabase.Refresh();//刷新}elseDebug.LogError(请选择正确的文件进行解析);处理的流程是提取选中的文件路径并读取加密的配置选项再根据用户的自定义选择保存的目录、文件名称和文件后缀等加密后存储信息将需要加密的文件进行读取内容进行加密后保存到对应的加密后存储位置中去。 解密实现 解密顾名思义就是加密的逆操作其适用场景是对加密过的文件进行解密后对文件进行浏览查看或者修改更新操作。对解密文件的操作类似于加密的操作窗口都是在Assets窗口进行以[MenuItem(“Assets/***”)]的形式进行不过细分了入口的菜单 [MenuItem(Assets/解密文件/直接解析(批量))] [MenuItem(Assets/解密文件/自定解析(单一))]这里就两种方式自定义解析仅支持单一文件和批量直接解析的方式。解析的样例代码如下 string[] strs Selection.assetGUIDs;string path AssetDatabase.GUIDToAssetPath(strs[0]);string suffix (Resources.Load(EncodeFile/DeSuffix) as TextAsset).text;string buildPath EditorUtility.SaveFilePanel(请选择解析保存的路径, GetPrePath(path), GetFileName(path), suffix);string spath buildPath;if (!string.IsNullOrEmpty(path)){string text File.ReadAllText(path);string decode Decrypt(text);//Debug.Log(spath);File.WriteAllText(spath, decode);AssetDatabase.Refresh();//刷新}elseDebug.LogError(请选择正确的文件进行解析);处理的流程和加密的流程类似提取选中的文件路径并读取加密的配置选项再根据用户的自定义选择保存的目录、文件名称和文件后缀等解密后存储信息将需要解密的文件进行读取内容进行解密后保存到对应的解密后存储位置中去。 加载解密测试 这个才是采用了两种方式进行是读取Resources的方式和读取StreamingAssetsPath的方式。分别读取CSV、TXT和JSON、XML文件。测试过程尽量简单化就是将文件读取、解密后将解密的内容显示到Text上即可,其中需要注意的是如果文件存储到Resources下的话文件最好是.txt、.json否则可能读取不到内容。UI和测试脚本的配置如下 读取Resources目录下的文件代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class LoadResourcesFileTest : MonoBehaviour {[Header(文件名)]public string FileName ;[Header(显示内容的Text)]public Text showText;private void Awake(){Debug.LogWarning(Resources文件夹下的文件最好是.txt、.json否则可能读取不到);if (!showText)showText transform.GetComponentText();RequestFile();}void RequestFile(){TextAsset ta Resources.Load(FileName) as TextAsset;string EnCodeStr ;if (ta)EnCodeStr ta.text;Debug.Log(解析前 EnCodeStr);string orgString Decoder.GetDecodeString(EnCodeStr);if (showText)showText.text orgString;Debug.Log(解析后 orgString);} }读取StreamingAssetsPath的代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI;public class LoadSAFileTest : MonoBehaviour {[Header(文件名)]public string FileName ;[Header(显示内容的Text)]public Text showText;private void Awake(){if (!showText)showText transform.GetComponentText();string filePath Application.streamingAssetsPath / FileName;StartCoroutine(RequestFile(filePath));}IEnumerator RequestFile(string uri){using (UnityWebRequest webRequest UnityWebRequest.Get(uri)){// Request and wait for the desired page.yield return webRequest.SendWebRequest();if (webRequest.result UnityWebRequest.Result.Success){Debug.Log(解析前webRequest.downloadHandler.text);string orgString Decoder.GetDecodeString(webRequest.downloadHandler.text);if (showText)showText.text orgString;Debug.Log(解析后 orgString);}else{Debug.LogError(加载解密文件异常: webRequest.error);}}} }这里的xml读取效果如下 源码工程 https://download.csdn.net/download/qq_33789001/88915590 无法下载需要稍等可能审核未通过。 工程说明 工程包含了上述所有的功能和演示场景包含了所有的编辑器扩展代码和测试功能源码可以自由修改自定义功能也可以通过 “Tools” “加密配置窗口”进行简单的加密配置后快速使用加密功能。 \Assets\TestFiles为加密测试的原文件 \Assets\Editor为编辑器拓展的源代码 \Assets\Resources 为测试加载加密文件并解析的文件和配置存储文件\Assets\Scenes包含测试加载加密后的CSV、TXT、JSON、XML文件的demo场景 \Assets\Scripts 测试和解密代码 \Assets\StreamingAssets加密后的测试文件。
http://www.dnsts.com.cn/news/154312.html

相关文章:

  • 怎样上网站建设百度seo整站优化公司
  • 物流管理网站怎么做wordpress做静态网页
  • 网站搭建设计方案一起做网店17潮汕
  • 雄安投资建设集团有限公司网站寄生虫做网站流量
  • 做网站维护需要学什么网站域名注册空间
  • 怎么做移动端网站网站原型设计流程
  • 网站设计教程网站程序天下:lamp网站开发黄金组合 pdf
  • 网站建设夹夹虫公司商务网页设计与制作软件
  • 网站每年要交钱吗公司网站宣传
  • 做婚礼请柬的网站有哪些工业信息部网站备案
  • 杭州国外网站推广公司9uu域名更新自动转跳
  • 网站特效代码上那找好海口网站建设发布
  • 服务器分配网络提高网站访问速度wordpress安装网页太简单了
  • 做网站都是用ps吗华侨大学英文网站建设
  • 自己做的网站怎么发布视频教程wordpress添加按钮
  • 网站地图生成软件仙桃做网站的公司
  • 做流量网站挂广告还能挣钱吗推荐wordpress安装方式
  • 上海网站建设公司指南母婴网站的功能设计
  • 设计网站用什么语言网站用html做的怎么弄后台
  • 贵阳市建设管理信息网站如何做企业推广
  • 网站建设中可能升级房地产电子商务的网站建设
  • 西安社动网站建设网站上线后
  • 旅游电子商务网站建设技术规范网页传奇游戏托套路
  • vue可以做pc端网站如何提升网站的搜索排名
  • 大学生兼职网站建设策划书有哪些可以推广的平台
  • 那个网站专门做婚纱相册建设银行网站不能建行转他行了
  • 建设公司网站模板下载做抽奖网站违法吗
  • 贵阳网站设计企业云开放平台
  • 网站建设 培训 南充wordpress首页中不显示文章
  • 食品网站网页设计微信公众号网页版入口