zoukankan      html  css  js  c++  java
  • webgame开发中的文件解密

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

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

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

    主要思路:

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

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

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

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

    更多参考:

    flash.display.Loader>>

    flash.display.Bitmap>>

    flash.net.URLStream>>

  • 相关阅读:
    浅谈三层模式
    javascript的全局变量
    BZOJ 3668 NOI2014 起床困难综合症 贪心
    调试经验--图像
    Mac OS X 10.10 执行 Eclipse 提示须要安装 Java
    ubuntuOS
    BLOB存储图片文件二进制数据是非对错
    API经济产业
    python模块目录文件后续
    MongoDB命令
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2433695.html
Copyright © 2011-2022 走看看