Sample code for 30+ languages & platforms
Zig

Twofish CFB Mode Encryption

See more Encryption Examples

Demonstrates how to encrypt using Twofish CFB (Cipher Feedback) mode.

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 assumes 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("twofish");
    crypt.setCipherMode("cfb");
    crypt.setKeyLength(256);

    // EncodingMode specifies the encoding of the output for
    // encryption, and the input for decryption.
    // It may be "hex", "url", "base64", "quoted-printable", or many other choices.
    crypt.setEncodingMode("hex");

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

    // The secret key must equal the size of the key.  For
    // 256-bit encryption, the binary secret key is 32 bytes.
    const key_hex = "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4";
    crypt.setEncodedKey(key_hex, "hex");

    // Encrypt a string...
    const enc_str = try crypt.encryptStringENC(alloc, "We must face the fact that the preservation of individual freedom is incompatible with a full satisfaction of our views of distributive justice. -- Friedrich Hayek");
    std.debug.print("{s}\n", .{enc_str});

    const decrypt = try chilkat.Crypt2.init();
    defer decrypt.deinit();

    decrypt.setCryptAlgorithm("twofish");
    decrypt.setCipherMode("cfb");
    decrypt.setKeyLength(256);
    decrypt.setEncodingMode("hex");
    decrypt.setEncodedIV(iv_hex, "hex");
    decrypt.setEncodedKey(key_hex, "hex");

    // Now decrypt:
    const dec_str = try decrypt.decryptStringENC(alloc, enc_str);
    std.debug.print("{s}\n", .{dec_str});
}