base64 编码,可以编n次,代价是占用空间增大
XMLDocument1->LoadFromFile("原文.xml");
XMLDocument1->Active = true;
AnsiString s = EncodeString(XMLDocument1->XML);
XMLDocument1->ChildNodes->Clear();
_di_IXMLNode node = XMLDocument1->AddChild("Text");
node->Text = s;
XMLDocument1->SaveToFile("加密.xml");
#include <encddecd.hpp>
// 解密
XMLDocument1->LoadFromFile("加密.xml");
XMLDocument1->Active = true;
AnsiString s = DecodeString(XMLDocument1->DocumentElement->Text);
XMLDocument1->ChildNodes->Clear();
XMLDocument1->XML->Text = s;
XMLDocument1->SaveToFile("原文.xml");
试了一下,可以用。有几处错误,一起修正。
1:
AnsiString s = EncodeString(XMLDocument1->XML);
改为: AnsiString s = EncodeString(XMLDocument1->XML->Text);
2:
XMLDocument1->XML->Text = s;
// 中间加一行 XMLDocument1->Active = true;
XMLDocument1->SaveToFile("原文.xml");
解密纠正:
XMLDocument1->LoadFromFile("加密.xml");
XMLDocument1->Active = true;
AnsiString s = DecodeString(XMLDocument1->DocumentElement->ChildNodes->Nodes[WideString("Text")]->Text);
XMLDocument1->DocumentElement->ChildNodes->Clear();
XMLDocument1->XML->Text = s;
XMLDocument1->Active = true;
XMLDocument1->SaveToFile("原文.xml");
AnsiString s = DecodeString(XMLDocument1->DocumentElement->ChildNodes->Nodes[WideString("Text")]->Text);
等同于
AnsiString s = DecodeString(XMLDocument1->DocumentElement->Text);
只要能保证XMLDocument1->DocumentElement是你放密文的节点即可,
至于其什么名,自己定。
只要把原来可读的XML文件,变成别人看不懂,就已经达到了你的目的。
//注释此行即可。直接访问XMLDocument1,达到目的(在内存里解密,读取xml)。
//XMLDocument1->SaveToFile("原文.xml");