Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
Match Java JCE AES CBC Encryption ResultsDownloads: MS Windows Visual C/C++ Libraries Linux/CentOS C/C++ Libraries MAC OS X C/C++ Libraries Solaris C/C++ Libraries C++ Builder Libraries FreeBSD C++ Libraries HP-UX C++ Libraries BlackBerry QNX C++ Libraries Shows sample code in C++ 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 C++ code. #include <CkCrypt2.h> #include <CkString.h> void ChilkatSample(void) { CkCrypt2 crypt; // Any string argument automatically begins the 30-day trial. bool success; success = crypt.UnlockComponent("30-day trial"); if (success != true) { printf("Crypt component unlock failed\n"); return; } CkString password; password = "secretPassphrase"; // Use the Digest MD5 algorithm to get a 16-byte binary secret key. crypt.put_HashAlgorithm("md5"); crypt.put_EncodingMode("hex"); CkString secretKeyHex; secretKeyHex = crypt.hashStringENC(password); crypt.put_CryptAlgorithm("aes"); crypt.put_CipherMode("cbc"); crypt.put_KeyLength(128); crypt.SetEncodedKey(secretKeyHex,"hex"); crypt.SetEncodedIV(secretKeyHex,"hex"); CkString text; text = "Though this be madness, yet there is method in 't"; CkString encText; encText = crypt.encryptStringENC(text); // Displays: // 79c357db030ac9ae66a84528a2f387717c5f10b48ef4385e5fe7b9227b3eeb8a // 77f24900890e72e35758b1f79f8f78d51ebe94536c30c57fd7b2c17b927715d7 printf("%s\n",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(); // } } |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.