Sample code for 30+ languages & platforms
Zig

AES Encrypt String (utf-8 byte representation) and return Base64

See more Encryption Examples

Demonstrates how to AES encrypt the utf-8 byte representation of a string and return in base64 format.

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 crypt = try chilkat.Crypt2.init();
    defer crypt.deinit();

    crypt.setCryptAlgorithm("aes");
    crypt.setCipherMode("cbc");
    crypt.setKeyLength(256);
    crypt.setCharset("utf-8");
    crypt.setEncodingMode("base64");

    const iv_hex = "000102030405060708090A0B0C0D0E0F";
    crypt.setEncodedIV(iv_hex, "hex");
    const key_hex = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F";
    crypt.setEncodedKey(key_hex, "hex");

    const encrypted_str = try crypt.encryptStringENC(alloc, "This is the original string");
    std.debug.print("{s}\n", .{encrypted_str});

    // Let's say we want to URL encode the base64 string..
    crypt.setCryptAlgorithm("none");
    crypt.setEncodingMode("url");
    const url_encoded = try crypt.encryptStringENC(alloc, encrypted_str);
    std.debug.print("{s}\n", .{url_encoded});

    // Sample output:

    //  q3fmgEqjqa9o//ZS6aPuh4Wtbrrxx/WOIQSKeVnesZg=
    //  q3fmgEqjqa9o%2F%2FZS6aPuh4Wtbrrxx%2FWOIQSKeVnesZg%3D

    // -------------------------------------------------------------------
    // Now let's do the reverse...
    //

    // We start with a string that is the binary encrypted data, base64 encoded, and then URL encoded.

    // We'll use the same crypt object.  If using a new instance of the crypt object,
    // make sure *all* settings are identical:  the algorithm, cipher mode, key length, charset, encoding mode, IV, and secret key.

    // Decode from URL...
    crypt.setCryptAlgorithm("none");
    crypt.setEncodingMode("url");
    const enc_base64 = try crypt.decryptStringENC(alloc, url_encoded);
    std.debug.print("{s}\n", .{enc_base64});

    // Now decrypt...
    crypt.setCryptAlgorithm("aes");
    crypt.setEncodingMode("base64");
    const original_str = try crypt.decryptStringENC(alloc, enc_base64);
    std.debug.print("{s}\n", .{original_str});
}