Sample code for 30+ languages & platforms
Zig

Duplicate Java AES Results

See more Encryption Examples

Demonstrates how to duplicate Java code for AES encryption.

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();

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

    crypt.setCryptAlgorithm("aes");
    crypt.setCipherMode("cbc");
    crypt.setKeyLength(256);

    crypt.setEncodedIV("000102030405060708090A0B0C0D0E0F", "hex");
    crypt.setEncodedKey("uX1AytOx2bqKn1G1NiblFM3YrEMnvciC", "ascii");

    crypt.setEncodingMode("hex");

    const encrypted = try crypt.encryptStringENC(alloc, "tmpString");
    std.debug.print("{s}\n", .{encrypted});

    std.debug.print("{s}\n", .{try crypt.decryptStringENC(alloc, encrypted)});

    // The above Chilkat code duplicates the following Java code:

    // import javax.crypto.Cipher;
    // import javax.crypto.spec.IvParameterSpec;
    // import javax.crypto.spec.SecretKeySpec;
    //
    // public class Test {
    //     private static final String KEY = "uX1AytOx2bqKn1G1NiblFM3YrEMnvciC";
    //     private static final String IV = "000102030405060708090A0B0C0D0E0F";
    //
    //     private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
    //     public static String bytesToHex(byte[] bytes) {
    //         char[] hexChars = new char[bytes.length * 2];
    //         for (int j = 0; j < bytes.length; j++) {
    //             int v = bytes[j] & 0xFF;
    //             hexChars[j * 2] = HEX_ARRAY[v >>> 4];
    //             hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
    //         }
    //         return new String(hexChars);
    //     }
    //     public static byte[] hexToBytes(String s) {
    //         int len = s.length();
    //         byte[] data = new byte[len / 2];
    //         for (int i = 0; i < len; i += 2) {
    //             data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
    //                                  + Character.digit(s.charAt(i+1), 16));
    //         }
    //         return data;
    //     }
    //     public static byte[] encrypt(String value) {
    //         try {
    //             System.out.println("---- encrypt ----");
    //             IvParameterSpec iv = new IvParameterSpec(hexToBytes(IV));
    //             SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("ASCII"), "AES");
    //             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    //             cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
    //             byte[] encrypted = cipher.doFinal(value.getBytes("ASCII"));
    //             String x = bytesToHex(encrypted);
    //             System.out.println(x);
    //             return encrypted;
    //         } catch (Exception ex) {
    //             ex.printStackTrace();
    //             return null;
    //         }
    //     }
    //
    //     public static String decrypt(byte[] encrypted) {
    //         try {
    //             System.out.println("---- decrypt ----");
    //             IvParameterSpec iv = new IvParameterSpec(hexToBytes(IV));
    //             SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("ASCII"), "AES");
    //             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    //             cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
    //             byte[] original = cipher.doFinal(encrypted);
    //             String x = new String(original);
    //             System.out.println(x);
    //             return x;
    //         } catch (Exception ex) {
    //             ex.printStackTrace();
    //             return null;
    //         }
    //
    //     }
    //
    //     public static void main(String[] args) {
    //         byte[] encrypted = encrypt("tmpString");
    //         decrypt(encrypted);
    //     }
    // }
    //
}