Delphi Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

Match Java JCE AES CBC Encryption Results

Download Chilkat Crypt ActiveX

Shows sample code in Delphi that matches Java JCE encryption results for 128-bit AES encryption using CBC mode. The equivalent Java JCE code is provided as commented-out code following the Delphi code.

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATCRYPT2Lib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
crypt: TChilkatCrypt2;
success: Integer;
password: String;
secretKeyHex: String;
text: String;
encText: String;

begin
crypt := TChilkatCrypt2.Create(Self);

// Any string argument automatically begins the 30-day trial.
success := crypt.UnlockComponent('30-day trial');
if (success <> 1) then
  begin
    ShowMessage('Crypt component unlock failed');

  end;

password := 'secretPassphrase';

// Use the Digest MD5 algorithm to get a 16-byte binary secret key.
crypt.HashAlgorithm := 'md5';
crypt.EncodingMode := 'hex';
secretKeyHex := crypt.HashStringENC(password);

crypt.CryptAlgorithm := 'aes';
crypt.CipherMode := 'cbc';
crypt.KeyLength := 128;
crypt.SetEncodedKey(secretKeyHex,'hex');
crypt.SetEncodedIV(secretKeyHex,'hex');

text := 'Though this be madness, yet there is method in ''t';
encText := crypt.EncryptStringENC(text);

// Displays:
// 79c357db030ac9ae66a84528a2f387717c5f10b48ef4385e5fe7b9227b3eeb8a
// 77f24900890e72e35758b1f79f8f78d51ebe94536c30c57fd7b2c17b927715d7

Memo1.Lines.Add(encText);

// 
// This is the equivalent code using Java JCE:
// 
// String password = "secretPassphrase";
// 
// MessageDigest md = MessageDigest.getInstance("MD5");
// md.update(password.getBytes("UTF-8"), 0, password.length());
// byte[] rawKey = md.digest();
// String text = "Though this be madness, yet there is method in 't";
// 
// SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES");
// IvParameterSpec ivSpec = new IvParameterSpec(rawKey);
// 
// Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivSpec);
// 
// byte[] encrypted = cipher.doFinal(text.getBytes("UTF-8"));
// 
// System.out.println(toHex(encrypted));

// This is the toHex method in Java:
// public static String toHex (byte buf[]) {
// 
// StringBuffer strbuf = new StringBuffer(buf.length * 2);
// int i;
// 
// for (i = 0; i < buf.length; i++) {
// if (((int) buf[i] & 0xff) < 0x10)
// strbuf.append("0");
// 
// strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
// }
// 
// return strbuf.toString();
// }

end;

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser