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
(Perl) Duplicate Java AES ResultsDemonstrates how to duplicate Java code for AES encryption.
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); # } # } # |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.