Perl
Perl
Duplicate Java AES Results
See more Encryption Examples
Demonstrates how to duplicate Java code for AES encryption.Chilkat Perl Downloads
use chilkat();
$crypt = chilkat::CkCrypt2->new();
$crypt->put_CryptAlgorithm("aes");
$crypt->put_CipherMode("cbc");
$crypt->put_KeyLength(256);
$crypt->SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex");
$crypt->SetEncodedKey("uX1AytOx2bqKn1G1NiblFM3YrEMnvciC","ascii");
$crypt->put_EncodingMode("hex");
$encrypted = $crypt->encryptStringENC("tmpString");
print $encrypted . "\r\n";
print $crypt->decryptStringENC($encrypted) . "\r\n";
# 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);
# }
# }
#