Sample code for 30+ languages & platforms
Tcl

Encrypt Already Existing Zip

See more Zip Examples

To encrypt an already existing non-encrypted .zip, the application must open the .zip, set the encryption related properties, and then re-write.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This requires the Chilkat Zip API to have been previously unlocked.
# See Unlock Chilkat Zip for sample code.

set zip [new_CkZip]

# Open an unencrypted .zip
set success [CkZip_OpenZip $zip "qa_data/zips/test.zip"]
if {$success != 1} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkZip $zip
    exit
}

# Unzip to a temp directory.
set numFilesUnzipped [CkZip_Unzip $zip "qa_output/tmp"]
if {$numFilesUnzipped < 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkZip $zip
    exit
}

# Clear the zip object.
CkZip_NewZip $zip "qa_output/aesTest.zip"

# Indicate that 128-bit AES encryption is to be used when writing the .zip
CkZip_put_Encryption $zip 4
CkZip_put_EncryptKeyLength $zip 128

# Set the password.
CkZip_put_EncryptPassword $zip "secret"

# Append the files.
CkZip_put_AppendFromDir $zip "qa_output/tmp"
set success [CkZip_AppendFiles $zip "*.*" 1]
if {$success != 1} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkZip $zip
    exit
}

# Write the .zip and close it.
set success [CkZip_WriteZipAndClose $zip]
if {$success != 1} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkZip $zip
    exit
}

puts "Success."

delete_CkZip $zip