Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Duplicate Java AES Results

See more Encryption Examples

Demonstrates how to duplicate Java code for AES encryption.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Crypt2;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  crypt: TCrypt2;
  encrypted: string;

begin
  crypt := TCrypt2.Create;

  crypt.CryptAlgorithm := 'aes';
  crypt.CipherMode := 'cbc';
  crypt.KeyLength := 256;

  crypt.SetEncodedIV('000102030405060708090A0B0C0D0E0F','hex');
  crypt.SetEncodedKey('uX1AytOx2bqKn1G1NiblFM3YrEMnvciC','ascii');

  crypt.EncodingMode := 'hex';

  encrypted := crypt.EncryptStringENC('tmpString');
  WriteLn(encrypted);

  WriteLn(crypt.DecryptStringENC(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);
  //  	}
  //  }
  //  


  crypt.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.