Visual FoxPro
Visual FoxPro
Compress and Encrypt a Large File (Low and Constant Memory Footprint)
See more Compression Examples
Demonstrates how to compress and encrypt a large file such that the memory footprint remains low and constant.Note: This example requires Chilkat v9.5.0.99 or greater.
Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loCompress
LOCAL loJson
LOCAL lcInPath
LOCAL lcOutPath
LOCAL lcInPath2
LOCAL lcOutPath2
LOCAL loCrypt
LOCAL lcDecryptedPath
LOCAL lcOutPath3
lnSuccess = 0
* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loCompress = CreateObject('Chilkat.Compression')
loCompress.Algorithm = "deflate"
* Set encryption params.
* The possible values are the same as for the corresponding properties in the Chilkat Crypt2 class/object.
* The encoded IV and Key must be specified as hex.
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("cryptAlgorithm","aes")
loJson.UpdateString("cipherMode","cbc")
loJson.UpdateInt("keyLength",128)
loJson.UpdateInt("paddingScheme",0)
loJson.UpdateString("encodedIV","000102030405060708090A0B0C0D0E0F")
loJson.UpdateString("encodedKey","000102030405060708090A0B0C0D0E0F")
* Do file-to-file compression+encryption in a single call.
lcInPath = "qa_data/largeFile.dat"
lcOutPath = "c:/temp/qa_output/compressed_encrypted.dat"
lnSuccess = loCompress.CompressEncryptFile(loJson,lcInPath,lcOutPath)
IF (lnSuccess = 0) THEN
? loCompress.LastErrorText
RELEASE loCompress
RELEASE loJson
CANCEL
ENDIF
* We can do file-to-file decrypt/decompress like this:
lcInPath2 = lcOutPath
lcOutPath2 = "c:/temp/qa_output/restored.dat"
lnSuccess = loCompress.DecryptDecompressFile(loJson,lcInPath2,lcOutPath2)
IF (lnSuccess = 0) THEN
? loCompress.LastErrorText
RELEASE loCompress
RELEASE loJson
CANCEL
ENDIF
* Note: The above decrypt + decompress is the equivalent of doing the same in these two steps:
loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.CryptAlgorithm = "aes"
loCrypt.CipherMode = "cbc"
loCrypt.KeyLength = 128
loCrypt.PaddingScheme = 0
loCrypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex")
lcDecryptedPath = "c:/temp/qa_output/decrypted.dat"
lnSuccess = loCrypt.CkDecryptFile(lcInPath2,lcDecryptedPath)
IF (lnSuccess = 0) THEN
? loCrypt.LastErrorText
RELEASE loCompress
RELEASE loJson
RELEASE loCrypt
CANCEL
ENDIF
lcOutPath3 = "c:/temp/qa_output/restored_in_two_steps.dat"
lnSuccess = loCompress.DecompressFile(lcDecryptedPath,lcOutPath3)
IF (lnSuccess = 0) THEN
? loCompress.LastErrorText
RELEASE loCompress
RELEASE loJson
RELEASE loCrypt
CANCEL
ENDIF
? "Success."
RELEASE loCompress
RELEASE loJson
RELEASE loCrypt