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文件. 首 ...
随机推荐
- JAXB--学习2
一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- java 截取字符串 拆分字符串
例如 想要吧"90_python" 分成“90” 和“python” 从网上看到的方法: public class splitTest { public static void m ...
- Qt使用AES加密算法对字符串进行加密
因工作需要,需要对字符串进行加密处理,在网上找了很长时间,终于找到了一个可以使用的aes加密算法.其源代码采用c++编写而成,但其头文件引用windows.h,经过修改部分代码,将#inc ...
- mysql 数据库 备份 还原
参考资料: http://blog.51yip.com/mysql/139.html
- 【VS2015正式版下载】Visual Studio 2015 正式版开放下载 Visual Studio 2015 神key
说明: 微软定于2015年7月20日发布Visual Studio 2015正式版,目前其官方网站已经提供正式版本的下载. 可在https://www.visualstudio.com/en-us/d ...
- 【转】tkinter实现的文本编辑器
此代码是看完如下教学视频实现的,所以算是[转载]吧: 效果: 代码: # -*- encodin ...
- Lesson 1: What is design? Why is it important?
Week 2: What is design? Why is it important? Article 1: Startups, this is how design works. It's a s ...
- C# - CSV(Comma-Separated Values)文件读取.
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sys ...
- Visual Studio Code使用typings拓展自动补全功能
转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...
- 关于控制文件和redo log损坏的恢复
前段时间一朋友自己电脑上的开发测试用的数据库出了点问题,电脑操作系统是Win8,直接在Win8上安装了Oracle11g,后来系统自动升级到Win8.1,Oracle相关的服务全都不见了,想想把数据文 ...