前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webgame开发中的文件解密

webgame开发中的文件解密

作者头像
全栈程序员站长
发布2022-06-26 11:27:18
3730
发布2022-06-26 11:27:18
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

上一篇讲的是文件的加密,这一篇记录一下如何加载并显示图片。

因为图片文件经过加密,已经成了二进制流的文件了(一堆乱码),只能使用URLStream来加载资源了。

这里有一点要注意:URLStream中的读取操作是非阻塞的,在读取数据之前必须使用bytesAvailable属性来确定是否能够获取足够的数据,如何不能获取足够的数据,将引发EOFError异常。

主要思路:

1、加载加密后的资源,使用URLStream

2、调用解密方法,获取解密后的数据

3、使用Loader类的loadBytes方法加载资源

代码语言:javascript
复制
   1: var urlLoader:URLStream = new URLStream();
代码语言:javascript
复制
   2: var url:String = getEncryptURL(url);    //通过需要加载的资源url,来获取实际需要加载的资源地址,如xx.png实际将请求xx.p
代码语言:javascript
复制
   3:  
代码语言:javascript
复制
   4: //监听urlLoader的事件
代码语言:javascript
复制
   5: //Event.Complete、IOErrorEvent.IO_ERROR、ProgressEvent.PROGRESS、HTTPStatusEvent.HTTP_STATUS、Event.OPEN
代码语言:javascript
复制
   6:  
代码语言:javascript
复制
   7: var req:URLRequest = new URLRequest(url);
代码语言:javascript
复制
   8:  
代码语言:javascript
复制
   9: urlLoadedCount = 0;
代码语言:javascript
复制
  10:  
代码语言:javascript
复制
  11: urlLoader.load(req);
代码语言:javascript
复制
  12:  
代码语言:javascript
复制
  13:  
代码语言:javascript
复制
  14:  
代码语言:javascript
复制
  15:  
代码语言:javascript
复制
  16:  
代码语言:javascript
复制
  17: //onCompleteHandler方法中
代码语言:javascript
复制
  18: var byte:ByteArray;
代码语言:javascript
复制
  19: var byteLen:int;
代码语言:javascript
复制
  20:  
代码语言:javascript
复制
  21: try 
代码语言:javascript
复制
  22: {
代码语言:javascript
复制
  23:     byteLen = urlLoader.bytesAvailable;
代码语言:javascript
复制
  24: }
代码语言:javascript
复制
  25: catch(e:Error)
代码语言:javascript
复制
  26: {
代码语言:javascript
复制
  27:     if (urlLoadedCount++ > 3)
代码语言:javascript
复制
  28:     {
代码语言:javascript
复制
  29:         return ;
代码语言:javascript
复制
  30:     }
代码语言:javascript
复制
  31:     
代码语言:javascript
复制
  32:     //reload 重新加载,直至超过3次
代码语言:javascript
复制
  33:     
代码语言:javascript
复制
  34:     return ;
代码语言:javascript
复制
  35: }
代码语言:javascript
复制
  36:  
代码语言:javascript
复制
  37: urlLoadedCount = 0;
代码语言:javascript
复制
  38:  
代码语言:javascript
复制
  39: byte = new ByteArray();
代码语言:javascript
复制
  40: urlLoader.readBytes(byte, 0, byteLen);
代码语言:javascript
复制
  41: byte = EncryptUtils.DeEncrypt(byte); //对数据进行解密操作,与上一篇中的加密方法对应
代码语言:javascript
复制
  42: byte.position = 0;
代码语言:javascript
复制
  43:  
代码语言:javascript
复制
  44: //开始加载图片
代码语言:javascript
复制
  45: var loader = new Loader();
代码语言:javascript
复制
  46:  
代码语言:javascript
复制
  47: //监听Event.Complete事件
代码语言:javascript
复制
  48: loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadImgCompleteHandler);
代码语言:javascript
复制
  49:  
代码语言:javascript
复制
  50: var context:LoaderContext = new LoaderContext();
代码语言:javascript
复制
  51: context.applicationDomain = ApplicationDomain.currentDomain;
代码语言:javascript
复制
  52: context.securityDomain = SecurityDomain.currentDomain;
代码语言:javascript
复制
  53:  
代码语言:javascript
复制
  54: loader.loadBytes(byte, context);
代码语言:javascript
复制
  55:  
代码语言:javascript
复制
  56:  
代码语言:javascript
复制
  57: //loadImgCompleteHandler方法
代码语言:javascript
复制
  58: 此时loader.content已经为Bitmap类了,使用addChild即可完成图片的加载
代码语言:javascript
复制
  59:  
代码语言:javascript
复制
  60:  
代码语言:javascript
复制
  61: //如果要加载的是xml、txt等文件内容,则无需此方法,使用byte.readUTFBytes(byte.bytesAvailable)便可得到解密后的字符串了
代码语言:javascript
复制
  62:  

更多参考:

flash.display.Loader>>

flash.display.Bitmap>>

flash.net.URLStream>>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133958.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档