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文件. 首 ...
随机推荐
- Python初体验_基础(一)
一:变量 变量的赋值: name = "Meng" 上述代码声明了一个变量,变量名为name,变量name的值为:"Meng" 变量定义: 一个在内存存数据的容 ...
- Highcharts教程
Highcharts特性: 兼容性 - 支持所有主流浏览器和移动平台(android.iOS等). 多设备 - 支持多种设备,如手持设备 iPhone/iPad.平板等 免费使用 - 开源免费 轻量 ...
- 苹果有益让老iPhone变慢以迫使消费者购买新一代的iPhone?
首先,来一组来自谷歌Trends的图片.(谷歌Trends记录了某段时间内相关关键词搜索的次数.) 假设你做数据,那么你应该会有些感觉. 特别是第一幅图,它规律似乎比第二幅更明显,第二幅图仅仅是一个普 ...
- xss漏洞校验
Xss(跨站脚本攻击)大家应该已经都有所了解,下面讲讲怎样查找xss漏洞吧. 确定xss漏洞的基本方法是使用攻击字符串来验证的,例如”><script>alert(document. ...
- DataGrid( 数据表格) 组件[5]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- C#。总结
数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体一.数据类型: (一)内建类型 整型(int short long byte uint ushort ulon ...
- C#利用ODP.NET往oracle中高效插入百万数据
由于工作的原因,要使用winform来处理大量的数据,但是c#自带的System.data.OracleClient效率不是很高,在网上找了很久,找到了ODP.NET,是oracle为c#提供的.貌似 ...
- 关于控制文件和redo log损坏的恢复
前段时间一朋友自己电脑上的开发测试用的数据库出了点问题,电脑操作系统是Win8,直接在Win8上安装了Oracle11g,后来系统自动升级到Win8.1,Oracle相关的服务全都不见了,想想把数据文 ...
- vsftpd安装、多用户配置
1.vsftpd安装 rpm -ivh vsftpd 2.2.2 11.el6_4.1.x86_x64.rpm 2.添加ftp用户 添加ftp用户组 groupadd ftpg 添加ftp用户 use ...
- C#操作iframe
<iframe id="cl" name="clf" src="xianshi.aspx" runat="server&qu ...