Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Duplicate Java AES ResultsDemonstrates how to duplicate Java code for AES encryption.
IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkCryptAlgorithm(crypt, "aes") CkCrypt2::setCkCipherMode(crypt, "cbc") CkCrypt2::setCkKeyLength(crypt, 256) CkCrypt2::ckSetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::ckSetEncodedKey(crypt,"uX1AytOx2bqKn1G1NiblFM3YrEMnvciC","ascii") CkCrypt2::setCkEncodingMode(crypt, "hex") encrypted.s = CkCrypt2::ckEncryptStringENC(crypt,"tmpString") Debug encrypted Debug CkCrypt2::ckDecryptStringENC(crypt,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); ; } ; } ; CkCrypt2::ckDispose(crypt) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.