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文件. 首 ...
随机推荐
- java中小工具————UUID
示例代码: package com.lky.test; import java.util.UUID; import org.junit.Test; /** * @Title: testUUID.jav ...
- ORACLE表空间
在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示,一个数据库由对应 ...
- WINDOWS OPTIMIZE
WIN10 SHUT DOWN AUTOMATICALLY UPDATE 1.service -> windows update 2.gpedit ->计算机配置 - 管理模板 - Win ...
- BLOG PLUGINS
文章分享按钮 (1)加网(JiaThis) (2)百度分享 文章关联推荐 每篇博文下面可以显示你博客中与该篇博文有些关联的几篇文章,也就是智能推荐,一方面可以增加你博文的曝光率和点击率,一方面也可以给 ...
- 怎么样学好C++
声明:这篇文章非本人所写,转自:http://coolshell.cn/articles/4119.html 昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写 ...
- Python之基础(二)
1.内建函数enumerate friends = ['john', 'pat', 'gary', 'michael'] for i, name in enumerate(friends): prin ...
- 福昕阅读器drm加密解密总结
drm是数字版权保护的一种方式,前一段时间在做四川文轩数字图书馆项目的时候用到了相关的知识,感觉这东西对于一些在线阅读和视频播放还是有很大用处的. 对于其工作原理我也很好奇,先摘抄度娘的内容如下,当然 ...
- AsyncHttpClient 登录 Application Fragment 回调 监听 软键盘
Activity /**登录界面及登陆后用户首页界面,使用两个Fragment实现*/ public class LoginActivity extends Activity implements L ...
- GCC下32位与64位机器类型变量所占字节数
GCC下32位与64位机器类型变量所占字节数 在C语言中,编译器一般根据自身硬件针对类型变量来选择合适的字节大小,下面列举一下在GCC编译器下32位机器与64位机器各个类型变量所占字节数目: C语言 ...
- OD: Writing Small Shellcode
第 5.6 节讲述如何精简 shellcode,并实现一个用于端口绑定的 shellcode.原书中本节内容来自于 NGS 公司的安全专家 Dafydd Stuttard 的文章 “Writing S ...