Visual FoxPro
Visual FoxPro
Duplicate Java AES Results
See more Encryption Examples
Demonstrates how to duplicate Java code for AES encryption.Chilkat Visual FoxPro Downloads
LOCAL loCrypt
LOCAL lcEncrypted
loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.CryptAlgorithm = "aes"
loCrypt.CipherMode = "cbc"
loCrypt.KeyLength = 256
loCrypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.SetEncodedKey("uX1AytOx2bqKn1G1NiblFM3YrEMnvciC","ascii")
loCrypt.EncodingMode = "hex"
lcEncrypted = loCrypt.EncryptStringENC("tmpString")
? lcEncrypted
? loCrypt.DecryptStringENC(lcEncrypted)
* 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);
* }
* }
*
RELEASE loCrypt