Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Match Java JCE AES CBC Encryption ResultsShows sample code in Visual FoxPro 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 Visual FoxPro code.
LOCAL loCrypt LOCAL lnSuccess LOCAL lcPassword LOCAL lcSecretKeyHex LOCAL lcText LOCAL lcEncText loCrypt = CreateObject('Chilkat.Crypt2') * Any string argument automatically begins the 30-day trial. lnSuccess = loCrypt.UnlockComponent("30-day trial") IF (lnSuccess <> 1) THEN =MESSAGEBOX("Crypt component unlock failed") QUIT ENDIF lcPassword = "secretPassphrase" * Use the Digest MD5 algorithm to get a 16-byte binary secret key. loCrypt.HashAlgorithm = "md5" loCrypt.EncodingMode = "hex" lcSecretKeyHex = loCrypt.HashStringENC(lcPassword) loCrypt.CryptAlgorithm = "aes" loCrypt.CipherMode = "cbc" loCrypt.KeyLength = 128 loCrypt.SetEncodedKey(lcSecretKeyHex,"hex") loCrypt.SetEncodedIV(lcSecretKeyHex,"hex") lcText = "Though this be madness, yet there is method in 't" lcEncText = loCrypt.EncryptStringENC(lcText) * Displays: * 79c357db030ac9ae66a84528a2f387717c5f10b48ef4385e5fe7b9227b3eeb8a * 77f24900890e72e35758b1f79f8f78d51ebe94536c30c57fd7b2c17b927715d7 ? lcEncText * * 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(); * } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2007 Chilkat Software, Inc. All Rights Reserved.
Mail Component · .NET Email Component · ASP Mail Component · XML Parser