AS3读取加密XML
首先要确定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的更多相关文章
- 【krpano】加密XML手动解密分析
krpano允许对XML文件进行加密,对XML进行相应的保护.加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML.两种加密方式的算法 ...
- XmlReader和XElement组合之读取大型xml文档
简介 在.NET framework 中存在大量操作xml数据的类库和api,但在.NET framework 3.5后我们的首选一般就是linq to xml. linq to xml操作xml数据 ...
- Unity3d 读取网络xml
Unity3d 读取网络xml Unity3d 读取网络xml,这个xml文件需要不包含BOM信息,可以用UltraEdit打开xml文件,并且另存为的时候,选择不包含BOM的utf-8格式存储!
- 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))
转载:程兴亮文章,地址;http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html 使用WebClient读取XAP包同 ...
- boost::property_tree读取解析.xml文件
boost::property_tree读取解析.xml文件 1)read_xml 支持中文路径 boost::property_tree::wptree wpt; std::locale:: ...
- 读取的XML节点中带有冒号怎么办?
读取的XML节点中带有冒号怎么办? 昨天,编程读取XML的时候,遇上了类似下面的一段XML <a:root xmlns:a="http://ww.abc.com/"> ...
- UE4读取本地XML文件
其实这里读取XML也是利用了Tinyxml来读取xml,主要是讲Tinyxml放在UE4中,遇到的一点点坑 1.先给出Tinyxml链接:http://www.grinninglizard.com/t ...
- XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
一.新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXPar ...
- Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】
使用WebClient读取XAP包同目录下的XML文件 我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件. 首 ...
随机推荐
- Storm drpc学习
示例代码: package com.lky.test; import org.apache.commons.logging.Log; import org.apache.commons.logging ...
- python 学习资料
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- github atom创建自己的语法高亮
使用atom一段时间了,有些插件还不是很成熟.比如项目中使用protobuf,早就有人写了语法高亮(https://github.com/podgib/atom-protobuf),但是效果不是很好. ...
- (转)OS X Mountain Lion 系统配置 Apache+Mysql+PHP 详细教程
如果你是一名 Web 开发者,很多时候都需要在本地搭建服务器测试环境,比如 Apache+Mysql+PHP 这样的环境.事实上 Mac OS X 中想要搭建这样的环境很简单,本文我们就会将详细的教程 ...
- uva 10626 - Buying Coke(记忆化搜索)
题目链接:10626 - Buying Coke 题目大意:给出要买可乐的数量, 以及1元,5元和10元硬币的数量, 每瓶可乐8元,每次照钱会按照最少硬币的方式找回, 问如何投币可使得投入的硬币数最少 ...
- vim中systemverilog的高亮显示
vim中systemverilog的高亮显示 Linux中的vim显示systemverilog语法高亮 windows中的gvim显示systemverilog语法高亮 Linux系统 查看打开vi ...
- jquery之杂记
//选中事件,放在初始化方法里面,toolbar下面 onSelect : function(rowIndex, rowData) { queryChannelFloor(rowIndex, rowD ...
- Web前端开发面试题赋答案
第一部分:用CSS实现布局 让我们一起来做一个页面 首先,我们需要一个布局. 请使用CSS控制3个div,实现如下图的布局. 第二部分:用javascript优化布局 由于我们的用户群喜欢放大看页面 ...
- 发布到IIS后 程序乱码
网站-功能视图-.net全球化 编码设置 请求:utf-8 文件:gb2312 响应:utf-8 响应头:utf-8 可以根据需要自己定义
- 深入理解REST与Servlet架构的区别
本身这个比较是个伪命题,因为 RESTful Service是一个软件架构“风格”, 而servlet是java 服务端的一种技术 之所以把它们拿出来比较,是由于它们代表了两个时代的技术风格与架构.下 ...