DataFlex
DataFlex
Encrypting and Decrypting Content
See more XML Examples
Demonstrates how to encrypt and decrypt the content of an XML node using 128-bit CBC AES encryption.The input XML, available at http://www.chilkatsoft.com/data/fox.xml, is this:
<root>
<fox1>The quick brown fox jumps over the lazy dog</fox1>
<fox2>The quick brown fox jumps over the lazy dog
<child1>ABC</child1>
<child2>XYZ</child2>
</fox2>
</root>
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoXml
String sTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
// The sample input XML is available at http://www.chilkatsoft.com/data/fox.xml
Get ComLoadXmlFile Of hoXml "fox.xml" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoXml To sTemp1
Showln sTemp1
Procedure_Return
End
// Navigate to the "fox1" node, which is the 1st child:
Get ComFirstChild2 Of hoXml To iSuccess
// Encrypt the content:
Get ComEncryptContent Of hoXml "myPassword" To iSuccess
// Navigate back to the root:
Send ComGetRoot2 To hoXml
// Examine the new XML document:
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// This is the XML w/ the encrypted content:
// <root>
// <fox1>1hTtf7XmO+78H+OIr5eWHIuXxP78KPeYrZbsD0HX4negO9ZRqYMBY4s46sPNp+Q+
// </fox1>
// <fox2>The quick brown fox jumps over the lazy dog
// <child1>ABC</child1>
// <child2>XYZ</child2>
// </fox2>
// </root>
// Now decrypt and show that the original content was restored:
Get ComFirstChild2 Of hoXml To iSuccess
Get ComDecryptContent Of hoXml "myPassword" To iSuccess
Send ComGetRoot2 To hoXml
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// Now encrypt the content of the "fox2" node.
// First navigate to the "fox2" child.
Get ComFindChild2 Of hoXml "fox2" To iSuccess
Get ComEncryptContent Of hoXml "myPassword" To iSuccess
Send ComGetRoot2 To hoXml
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// This is the XML w/ the "fox2" encrypted content:
// <root>
// <fox1>The quick brown fox jumps over the lazy dog</fox1>
// <fox2>1hTtf7XmO+78H+OIr5eWHIuXxP78KPeYrZbsD0HX4negO9ZRqYMBY4s46sPNp+Q+
//
// <child1>ABC</child1>
// <child2>XYZ</child2>
// </fox2>
// </root>
// Notice that the *content* of the node is encrypted. The child nodes are NOT encrypted.
// This is intentional. To encrypt the content + the subtrees rooted at a given node,
// one would call ZipTree to transform the content and subtrees
// to Base64-encoded compressed content, and then call
// EncryptContent to encrypt.
// Finally, decrypt the "fox2" content:
Get ComFindChild2 Of hoXml "fox2" To iSuccess
Get ComDecryptContent Of hoXml "myPassword" To iSuccess
Send ComGetRoot2 To hoXml
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
End_Procedure