首先要确定xml使用了哪些加密方式,这样在As3中就反过来解密。

我加密xml的方式是先将xml文件打包为一个压缩文件,然后将压缩文件进行RC4加密,最后用base64将加密过的压缩包转为base64字符串再将字符串用一个xml保存起来,下面是加密的delphi代码

procedure TConfigController.EncryptXML(xmlPath,saveToFile:WideString);
var
zipmst:TZipMaster19;
tempFile,key:string; xmlDocument:IXMLDocument;
rootNode,cdnode:IXMLNode;
list:TTntStringList;
begin
{ Zip in to a file }
try
zipmst:=TZipMaster19.Create(nil);
tempFile:=WAddSlash(WideExtractFilePath(xmlPath)) + 'temp.xml';
with zipmst do
begin
Active:=true;
DLLDirectory:=ExtractFilePath(ParamStr()); FSpecArgs.Add(xmlPath);
ZipFileName:=tempFile;
RootDir:=ExtractFilePath(xmlPath);
end;
zipmst.Add;
key := GetKeyString;
TRC4Encrypter.EncryptFile(key, tempFile, saveToFile);
StreamToBase64(saveToFile);
list:=TTntStringList.Create;
list.LoadFromFile(saveToFile);
xmlDocument:=TXMLDocument.Create(nil);
xmlDocument.Active:=true;
xmlDocument.Version := '1.0';
xmlDocument.Encoding := 'utf-8';
rootNode:=xmlDocument.AddChild('Data');
cdnode:=xmlDocument.CreateNode(list.Text,ntCData);
rootNode.ChildNodes.Add(cdnode);
xmlDocument.SaveToFile(saveToFile);
DeleteFile(tempFile);
finally
if Assigned(zipmst) then FreeAndNil(zipmst);
if Assigned(list) then FreeAndNil(list);
xmlDocument.Active:=false;
end;
end;

as3解密过程就反过来,下面是as3读取并解密取得真正的xml数据

    private function onCompleteHandler(event:Event):void
{
var xml:XML;
if(isEncrypt&&_key.length>0){
xml=XML(event.target.data);
// Base64解码
var byteArr:ByteArray=Base64.decode(xml.toString());
byteArr.position=0;
byteArr.readUTFBytes(byteArr.length);
xml=null;
//rc4解码
var keyStr:String=key;
keyStr=Hex.fromString(keyStr);
var keyArr:ByteArray=Hex.toArray(keyStr);
var rc4:ARC4=new ARC4(keyArr);
rc4.decrypt(byteArr);
rc4.dispose();
keyArr.clear(); var zip:FZip=new FZip();
zip.loadBytes(byteArr);
var zipFile:FZipFile=zip.getFileByName('config.xml');
if(zipFile!=null){
var xmlBytes:ByteArray=zipFile.content;
xml=XML(xmlBytes.toString());
xmlBytes.clear();
}
zip.close();
}else{
xml=XML(event.target.data);
}
if(xml!=null){
if(_onComplete){
_onComplete.apply(null,[xml]);
}
}else if(_onError!=null){ _onError.apply(null,["Xml file load fail!"]);
}
loader.removeEventListener(IOErrorEvent.IO_ERROR,onLoaderIOErrorHandler);
loader.removeEventListener(ProgressEvent.PROGRESS,onProgressHandler);
loader.removeEventListener(Event.COMPLETE,onCompleteHandler);
}

AS3读取加密XML的更多相关文章

  1. 【krpano】加密XML手动解密分析

    krpano允许对XML文件进行加密,对XML进行相应的保护.加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML.两种加密方式的算法 ...

  2. XmlReader和XElement组合之读取大型xml文档

    简介 在.NET framework 中存在大量操作xml数据的类库和api,但在.NET framework 3.5后我们的首选一般就是linq to xml. linq to xml操作xml数据 ...

  3. Unity3d 读取网络xml

    Unity3d 读取网络xml Unity3d 读取网络xml,这个xml文件需要不包含BOM信息,可以用UltraEdit打开xml文件,并且另存为的时候,选择不包含BOM的utf-8格式存储!

  4. 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))

    转载:程兴亮文章,地址;http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html 使用WebClient读取XAP包同 ...

  5. boost::property_tree读取解析.xml文件

    boost::property_tree读取解析.xml文件 1)read_xml 支持中文路径  boost::property_tree::wptree wpt;    std::locale:: ...

  6. 读取的XML节点中带有冒号怎么办?

    读取的XML节点中带有冒号怎么办? 昨天,编程读取XML的时候,遇上了类似下面的一段XML <a:root xmlns:a="http://ww.abc.com/"> ...

  7. UE4读取本地XML文件

    其实这里读取XML也是利用了Tinyxml来读取xml,主要是讲Tinyxml放在UE4中,遇到的一点点坑 1.先给出Tinyxml链接:http://www.grinninglizard.com/t ...

  8. XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

    一.新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXPar ...

  9. Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】

    使用WebClient读取XAP包同目录下的XML文件 我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件. 首 ...

随机推荐

  1. Python初体验_基础(一)

    一:变量 变量的赋值: name = "Meng" 上述代码声明了一个变量,变量名为name,变量name的值为:"Meng" 变量定义: 一个在内存存数据的容 ...

  2. Highcharts教程

    Highcharts特性: 兼容性 - 支持所有主流浏览器和移动平台(android.iOS等). 多设备 - 支持多种设备,如手持设备 iPhone/iPad.平板等 免费使用 - 开源免费 轻量 ...

  3. 苹果有益让老iPhone变慢以迫使消费者购买新一代的iPhone?

    首先,来一组来自谷歌Trends的图片.(谷歌Trends记录了某段时间内相关关键词搜索的次数.) 假设你做数据,那么你应该会有些感觉. 特别是第一幅图,它规律似乎比第二幅更明显,第二幅图仅仅是一个普 ...

  4. xss漏洞校验

    Xss(跨站脚本攻击)大家应该已经都有所了解,下面讲讲怎样查找xss漏洞吧. 确定xss漏洞的基本方法是使用攻击字符串来验证的,例如”><script>alert(document. ...

  5. DataGrid( 数据表格) 组件[5]

    本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...

  6. C#。总结

    数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体一.数据类型: (一)内建类型 整型(int short long byte uint ushort ulon ...

  7. C#利用ODP.NET往oracle中高效插入百万数据

    由于工作的原因,要使用winform来处理大量的数据,但是c#自带的System.data.OracleClient效率不是很高,在网上找了很久,找到了ODP.NET,是oracle为c#提供的.貌似 ...

  8. 关于控制文件和redo log损坏的恢复

    前段时间一朋友自己电脑上的开发测试用的数据库出了点问题,电脑操作系统是Win8,直接在Win8上安装了Oracle11g,后来系统自动升级到Win8.1,Oracle相关的服务全都不见了,想想把数据文 ...

  9. vsftpd安装、多用户配置

    1.vsftpd安装 rpm -ivh vsftpd 2.2.2 11.el6_4.1.x86_x64.rpm 2.添加ftp用户 添加ftp用户组 groupadd ftpg 添加ftp用户 use ...

  10. C#操作iframe

    <iframe id="cl" name="clf" src="xianshi.aspx" runat="server&qu ...