Sample code for 30+ languages & platforms
Zig

Create a WinZip/7-Zip compatible AES Encrypted Zip

See more Zip Examples

Creates a WinZip compatible AES-encrypted .zip archive

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const zip = try chilkat.Zip.init();
    defer zip.deinit();

    zip.newZip("/myZipDir/aes.zip") catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    // Set properties to indicate that the Zip should be
    // AES encrypted.

    // A value of 4 indicates WinZip compatible AES encryption.
    zip.setEncryption(4);

    // Key length can be 128, 192, or 256 bits.
    zip.setEncryptKeyLength(128);

    // Set the password for AES encryption:
    zip.setEncryptPassword("myPassword");

    // Add a directory tree to be zipped.  (The files
    // are not compressed at this point -- only references
    // to the files and directories are added to the zip object.)
    const recurse = true;
    zip.appendFiles("c:/temp/a/*", recurse) catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    // Create the encrypted zip ("/myZipDir/aes.zip")
    // The path of the zip is what was originally passed
    // to the NewZip method (above).
    zip.writeZipAndClose() catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Created AES Encrypted Zip.\n", .{});
}