是谁把Adobe数字签名的RSL存放到FlashPlayer指定的缓存当中的?

是Flex框架吗?经过试验,这是FlashPlayer自动为我们做的。

>>FlashPlayer的缓存在哪里?

(1)。XP系统

C:/Documents and Settings/用户名/Application Data/Adobe/Flash Player/AssetCache/H7UC3H3Y

(2)。VISTA和WIN7

C:/Users/用户名/AppData/Roaming/Adobe/Flash Player/AssetCache/RAU4Y963

这两个路径的最后一个文件夹名是随机的,另外拷贝过去的swz文件也需注意,它是类似于ABD49354324081CEBB8F60184CF5FEE81F0F9298.swz 这样的名字。似乎是截取自于该文件的数字签名。

>>为了使用RSL,我们要做些什么?FlashPlayer又会为我们做些什么?

Adobe数字签名的RSL(*.swz)文件必须由我们编写代码来下载。  --------  对于Flex而言,SystemManager负责启动RSL(*.swz)的下载。

下载完毕之后,我们不需要编写任何代码,FlashPlayer会自动把它们存放到FlashPlayer指定的缓存当中。

>>如何验证?

首先清空上述FlashPlayer缓存。

然后,通过FlashBuilder我们建立ActionScript工程:TestRslSave

然后,把 framework_4.6.0.23201.swz 文件手工放置在Debug-Bin目录下。

最后编译并执行下面的程序,看FlashPlayer缓存,你会发现多了三个文件。

(1)。ABD49354324081CEBB8F60184CF5FEE81F0F9298.swz   ----  它就是framework_4.6.0.23201.swz

(2)。ABD49354324081CEBB8F60184CF5FEE81F0F9298.heu

(3)。cacheSize.txt

下面的代码没有文件的磁盘读些操作,因此可以认定:swz文件是FlashPlayer帮我们放入其缓存的。

TestRslSave.as

注意:下载Adobe数字签名的swz文件的时候,myURLReq.digest必须设定

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
public class TestRslSave extends Sprite
{
private var txt1:TextField;
public function TestRslSave()
{
txt1 = new TextField();
addChild(txt1);
var myURLReq:URLRequest = new URLRequest();
myURLReq.url = "framework_4.6.0.23201.swz";
myURLReq.digest = "abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437";
var myURLLoader:URLLoader = new URLLoader();
myURLLoader.addEventListener(Event.COMPLETE, onComplete);
myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler);
myURLLoader.load(myURLReq);
}
function onComplete(event:Event) {
txt1.text="onComplete";
}
function onErrorHandler(event:IOErrorEvent) {
txt1.text=event.toString();
}
}
}

>>必要的解释

(1)。myURLReq.digest

首先请参考《ActionScript 3.0 语言和组件参考》中对于URLRequest的成员变量digest的说明。摘要如下:

digest 属性
digest:String  [读写]

语言版本:  ActionScript 3.0
运行时版本:  AIR 1.0, Flash Player 9.0.115.0

唯一地标识将存储到 Flash Player 缓存中(或从中检索)的已签名 Adobe 平台组件的字符串。Adobe 平台组件是一个签名文件(SWZ 文件),其中包含永久缓存在用户计算机上的 SWF 内容。Adobe 对所有 SWZ 进行签名。摘要对应于单个缓存文件;如果对该文件进行了任何更改,则其摘要的更改将以不可预知的方式进行。通过使用摘要,您可以跨多个域验证缓存文件。具有相同摘要的两个文件是同一个文件,具有不同摘要的两个文件是不同的文件。实际上无法创建文件来“窃听”摘要以假装是另一个摘要。此属性仅适用于 SWF 内容,不适用于在 AIR 中运行的 JavaScript 代码。

摘要基于 SHA-256 消息摘要算法(长度为 64 个字符,采用十六进制格式)。

例如,Flex SDK 包括 Flex 框架的 SWZ(而且它为该 SWZ 文件提供了摘要字符串)。可以将此 SWZ 发布到您的 Web 服务器上并加载到 SWF 文件中(使用 URLLoader 对象的 load() 方法)。如果最终用户的计算机已缓存了匹配的 SWZ 文件,则应用程序将使用此缓存的 SWZ 文件。(SWZ 文件在其 digest 与您提供的摘要匹配时匹配。)否则,应用程序将从您指定的 URL 下载 SWZ 文件。

仅在 URLLoader.load() 方法调用中使用的 URLRequest 对象中设置 digest 参数即可加载 SWZ 文件。如果 URLRequest 对象的 digest 属性在用于其它方法时进行了设置,则应用程序将引发 IOError 异常。

(2)。myURLReq.digest = "abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437";

这串字符代表framework_4.6.0.23201.swz的数字摘要。上述示例执行过程中,FlashPlayer会“暗地里”计算framework_4.6.0.23201.swz的数字摘要,然后和这串字符作比较。如果不同,则报错。

我们的示例程序是如何预先得知这个字符串的呢?

任意为某个Flex工程增加编译参数: keep-generated-actionscript=true

则编译该工程后,会出现文件夹generated。

在其中找到名字类似于_XXXXXXX_mx_managers_SystemManager-generated.as的代码文件。

察看代码可以找到类似于下面的内容,你发现了什么?

[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/framework_4.6.0.23201.swz",
"http://fpdownload.adobe.com/pub/swz/crossdomain.xml",
"abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437",
"SHA-256",true,true,"default"),
new RSLData("framework_4.6.0.23201.swz",
"",
"abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437",
"SHA-256",true,true,"default")],

>>引申思考:

是谁把非数字签名的RSL放入了浏览器缓存?

是谁把Adobe数字签名的RSL(*.swz)存放到FlashPlayer指定的缓存当中的? 是FlashPlayer相关推荐

  1. swf swc swz RSLs ant

    只要做Flex项目, 终有一天你要涉及到RSLs, 要和swf, swc, swz文件打交道. 希望这篇文章能帮助大家理清楚这些文件的用途和关系. RSLs全称是Runtime Shared Libr ...

  2. FLEX RSL 部署产生的问题

    那是因为FLEX在发布的时候会带一个框架文件,框架文件包含了所有的Flex内置类... 该文件大小大概是500多K,以致一个空的FLEX项目.发布后就有500多K 所以FLEX提供了RSL(runti ...

  3. Windows 2000和WindowsXP中神秘的数字签名

    大家知道吗?微软发布的具有数字签名的SP2才是正式版本(右击打开文件属性窗口可以查看到图1所示的数字签名信息),这是怎么一回事呢? 图1 一.Windows的文件保护功能 在Windows 2000以 ...

  4. 《Adobe Premiere Pro CC经典教程》——2.3 设置序列

    本节书摘来自异步社区<Adobe Premiere Pro CC经典教程>一书中的第2课,第2.3节,作者 [美]Adobe公司 ,译者 裴强,宋松,更多章节内容可以访问云栖社区" ...

  5. 第一章 Adobe After Effects AE插件开发 SDK入门-SPBasicSuite对象

    文章目录 1.SPBasicSuite对象 2.作者答疑 1.SPBasicSuite对象   插件的本质就是一个后缀名称为aex的动态库,把编译好的动态库放到AE指定的文件夹下(一般是AE安装文件夹 ...

  6. 简要评说Adobe的FlashPlayer的渲染算法

    前些时候看到CSDN上一篇文章介绍FlashPlayer的渲染效能是HTML 5的数倍文章,回想起几年来对Adobe的FlashPlayer研究,想从理论上探究一下为什么会有这样的结果,同时也解释一下 ...

  7. python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证

    OpenSSL和Python实现RSA Key数字签名和验证,基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基 ...

  8. 数据安全:通用的数据加密方法(AES、RSA、数字签名和数字证书)

    在日常的接口交互中,数据的安全性是优先考虑的问题之一.那么一般我们在实际工作中如何去保证数据的安全呢?一般是通过数据加密的方式来处理.加密算法,如果按是否可以把密文还原成明文来划分的话,可以分为可逆加 ...

  9. Useing flex4 读书笔记

    chapter 1 : intruduction to flex4 1.flex包含一个基于组件的开发模型,你只需要按需求继承现有的组件并扩展相关的方法就可开发你的应用. 2.可视化组件包括以下主要特 ...

最新文章

  1. 三种会计科目表:运营会计科目表、国家会计科目表、集团会计科目表
  2. Ajax请求如何设置csrf_token
  3. ubuntu display
  4. iis8.5限速没有效果怎么回事_电梯为何会发生坠梯?没有安全措施吗?能在井道底安装大弹簧吗?...
  5. 设计师必备超人气设计素材网站
  6. CPU虚拟化的常见技术
  7. 【报告分享】2019区块链赋能新型智慧城市白皮书.pdf(附204页电子书下载链接)
  8. Java eclipse: errors exist in required project(s)
  9. 什么是PM2 ---- (零秒重启)
  10. 开发者需要什么样的技术社区?
  11. 乐高叉车wedo教案_24乐高教育wedo编程摩天轮教案
  12. android 焦点的作用,详细介绍Android中的视图焦点Focus的使用
  13. 中国最美的40个地方 第一名竟然不是九寨沟
  14. VMware ESXI虚拟机修改MAC地址的方法
  15. 关键字深度剖析,集齐所有关键字可召唤神龙?【三】
  16. LWIP 以太网先启动后插入网线无法入网的解决办法
  17. 小鱼的航程(两种解决方法)
  18. 满满的干货!传统备份vs CDP vs CDM
  19. 再谈如何学习Linux,一线Linux专家学习经验谈
  20. 算法系列10—基数排序

热门文章

  1. 卸载Axmath 后,word加载项中还是有 Axmath 的解决方法
  2. c语言中数组的动态赋值法
  3. 简单上手H5+CSS前端3D酷炫特效源代码
  4. 新垣结衣最美照片收藏(一)
  5. java休眠5s_java定时5s
  6. 网络运维面试----考官会问到的问题?
  7. 解决mysql子查询里面无法使用LIMIT This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery'
  8. 拼多多商品活动排名查询
  9. xorm reverse
  10. 如何理解计算机科学中的接口,计算机图形学