If you need the built-in "cfusion_encrypt" and "cfusion_decrypt" undocumented features that Adobe tacitly deprecated in ColdFusion 11, the developer converted them to UDF back in 2005.
http://www.barneyb.com/barneyblog/2005/10/28/cfusion_encryptcfusion_decrypt-udfs/
<cfscript> function binaryXOR(n1, n2){ n1 = formatBaseN(n1, 2); n2 = formatBaseN(n2, 2); return inputBaseN(replace(n1 + n2, 2, 0, "all"), 2); } function fusion_encrypt(string, key){ var i = ""; var result = ""; key = repeatString(key, ceiling(len(string) / len(key))); for (i=1;i LTE len(string);i=i+1) { result = result & rJustify(formatBaseN(binaryXOR(asc(mid(string, i, 1)), asc(mid(key, i, 1))), 16), 2); } return ucase(replace(result, " ", "0", "all")); } function fusion_decrypt(string, key){ var i = ""; var result = ""; key = repeatString(key, ceiling(len(string) / 2 / len(key))); for (i=2;i LTE len(string);i=i+2) { result = result & chr(binaryXOR(inputBaseN(mid(string, i - 1, 2), 16), asc(mid(key, i / 2, 1)))); } return result; } </cfscript>
Here's an example script on how to test it:
<cfset key = "test"> <cfoutput> <table border=1 cellspacing=0> <thead> <tr><th>String</th> <th>cfusion_encrypt</th> <th>fusion_encrypt</th> <th>cfusion_decrypt</th> <th>fusion_decrypt</th> </tr> </thead> <tbody> <cfloop list="Adobe,ColdFusion,is,damn cool!" index="i"> <tr> <td>#i#</td> <td><cftry>#cfusion_encrypt(i, key)#<cfcatch>ERROR</cfcatch></cftry></td> <td><cftry>#fusion_encrypt(i, key)#<cfcatch>ERROR</cfcatch></cftry></td> <td><cftry>#cfusion_decrypt(cfusion_encrypt(i, key), key)#<cfcatch>ERROR</cfcatch></cftry></td> <td><cftry>#fusion_decrypt(fusion_encrypt(i, key), key)#<cfcatch>ERROR</cfcatch></cftry></td> </tr> </cfloop> </tbody> </table> </cfoutput>