PureBasic
PureBasic
Duplicate Java AES Results
See more Encryption Examples
Demonstrates how to duplicate Java code for AES encryption.Chilkat PureBasic Downloads
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