· 7 years ago · Nov 14, 2018, 03:50 AM
1<cfset strBase64Value = encrypt(strValue,24 character key,AES) />
2
3<cfscript>
4 plainText = "Nothing to see";
5 // 128 bit key base64 encoded
6 keyInBase64 = "Y25Aju8H2P5DR8mY6B0ezg==";
7 // "AES" is short for "AES/ECB/PKCS5Padding"
8 encryptedText = encrypt(plainText, keyInBase64, "AES", "hex");
9 WriteDump( encryptedText );
10 // result: 8889EDF02F181158AAD902AB86C63951
11</cfscript>
12
13byte[] bytes = SomeMethodToConvertHexToBytes( encryptedText );
14byte[] key = Convert.FromBase64String( keyInBase64 );
15
16string decryptedText = null;
17
18using (RijndaelManaged algorithm = new RijndaelManaged())
19{
20
21 // initialize settings to match those used by CF
22 algorithm.Mode = CipherMode.ECB;
23 algorithm.Padding = PaddingMode.PKCS7;
24 algorithm.BlockSize = 128;
25 algorithm.KeySize = 128;
26 algorithm.Key = key;
27
28 ICryptoTransform decryptor = algorithm.CreateDecryptor();
29
30 using (MemoryStream msDecrypt = new MemoryStream(bytes))
31 {
32 using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
33 {
34 using (StreamReader srDecrypt = new StreamReader(csDecrypt))
35 {
36
37 decryptedText = srDecrypt.ReadToEnd();
38 }
39 }
40 }
41}
42
43Console.WriteLine("Encrypted String: {0}", encryptedText);
44Console.WriteLine("Decrypted String: {0}", decryptedText);
45
46private static final String PADDING = "DESede/ECB/PKCS5Padding";
47private static final String UTF_F8 = "UTF-8";
48private static final String DE_SEDE = "DESede";
49private String secretKey;
50
51
52public String encrypt(String message) throws Exception {
53
54 secretKey = getSecretKey();
55
56 final byte[] secretBase64Key = Base64.decodeBase64(secretKey);
57 final SecretKey key = new SecretKeySpec(secretBase64Key, DE_SEDE);
58 final Cipher cipher = Cipher.getInstance(PADDING);
59 cipher.init(Cipher.ENCRYPT_MODE, key);
60 final byte[] plainTextBytes = message.getBytes();
61 final byte[] cipherText = cipher.doFinal(plainTextBytes);
62
63 return Hex.encodeHexString(cipherText);
64}
65
66public String decrypt(String keyToDecrypt) throws Exception {
67
68 secretKey = getSecretKey();
69
70 byte[] message = DatatypeConverter.parseHexBinary(keyToDecrypt);
71 final byte[] secretBase64Key = Base64.decodeBase64(secretKey);
72 final SecretKey key = new SecretKeySpec(secretBase64Key, DE_SEDE);
73 final Cipher decipher = Cipher.getInstance(PADDING);
74 decipher.init(Cipher.DECRYPT_MODE, key);
75 final byte[] plainText = decipher.doFinal(message);
76
77 return new String(plainText, UTF_F8);
78}