Sample code for 30+ languages & platforms
DataFlex

Duplicate Java AES Results

See more Encryption Examples

Demonstrates how to duplicate Java code for AES encryption.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoCrypt
    String sEncrypted
    String sTemp1

    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End

    Set ComCryptAlgorithm Of hoCrypt To "aes"
    Set ComCipherMode Of hoCrypt To "cbc"
    Set ComKeyLength Of hoCrypt To 256

    Send ComSetEncodedIV To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex"
    Send ComSetEncodedKey To hoCrypt "uX1AytOx2bqKn1G1NiblFM3YrEMnvciC" "ascii"

    Set ComEncodingMode Of hoCrypt To "hex"

    Get ComEncryptStringENC Of hoCrypt "tmpString" To sEncrypted
    Showln sEncrypted

    Get ComDecryptStringENC Of hoCrypt sEncrypted To sTemp1
    Showln sTemp1

    // 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);
    // 	}
    // }
    // 


End_Procedure