Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkZip.pb"

Procedure ChilkatExample()

    success.i = 0

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

    zip.i = CkZip::ckCreate()
    If zip.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Open an unencrypted .zip
    success = CkZip::ckOpenZip(zip,"qa_data/zips/test.zip")
    If success <> 1
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    ; Unzip to a temp directory.
    numFilesUnzipped.i = CkZip::ckUnzip(zip,"qa_output/tmp")
    If numFilesUnzipped < 0
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    ; Clear the zip object.
    CkZip::ckNewZip(zip,"qa_output/aesTest.zip")

    ; Indicate that 128-bit AES encryption is to be used when writing the .zip
    CkZip::setCkEncryption(zip, 4)
    CkZip::setCkEncryptKeyLength(zip, 128)

    ; Set the password.
    CkZip::setCkEncryptPassword(zip, "secret")

    ; Append the files.
    CkZip::setCkAppendFromDir(zip, "qa_output/tmp")
    success = CkZip::ckAppendFiles(zip,"*.*",1)
    If success <> 1
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    ; Write the .zip and close it.
    success = CkZip::ckWriteZipAndClose(zip)
    If success <> 1
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkZip::ckDispose(zip)


    ProcedureReturn
EndProcedure