我正在使用一些遗留代码试图替换在ColdFusion 11中弃用的cfusion_encrypt和decrypt。我收到以下错误:
尝试加密或解密输入字符串时发生错误:输入和输出编码不相同..
我一直在处理以下主题中找到的答案: Hide/Encrypt URL variables in ColdFusion
由于我的网址以.cfm?LS=%2A2%20J%2FNV16Q%25%5EWJ%40%20%20
解密方面似乎给我带来了麻烦,我不确定我在寻找什么。以下是我正在使用的一些代码
这是在文件中设置加密的方式以及删除cfusion_encrypt的位置。
<a href="Menu.cfm?<cfoutput>LS=#URLEncodedFormat(Encrypt(LS, key))#</cfoutput>"
在我的application.cfm文件中,目前有这段代码
<cfif isDefined('url.LS')>
<CFSET URLDecrypt(Key,LS)>
我尝试用这个替换
<cfif isDefined('url.LS')>
<CFSET url.LS = #Decrypt("#Key#",url.LS)#>
并且代码在所有应用程序共享的全局文件中调用此函数。
<cfscript>
function urlDecrypt(key, LS){
scope = "url";
i = 0;
thisPair = "";
thisName = "";
thisValue = "";
// Check for valid key
if (not isDefined('LS'))
LS = #cgi.Query_String#;
LS = cfusion_Decrypt(#LS#, key); // Decrypt the Link string back into LS
//writeoutput(ls); // for DEBUGGING
// set the variables
for(i = 0; i lt listLen(LS, '&'); i = i + 1)
{
// Break up the list into seprate name=value pairs
thisPair = listGetAt(LS, i + 1, '&');
// Get the name
thisName = listGetAt(thisPair, 1, '=');
// Get the value
thisValue = listGetAt(thisPair, 2, '=');
// Set the name with the scope
thisName = scope & '.' & thisName;
// Set the variable
setVariable(thisName, thisValue);
}
}
我知道该函数仍然有不推荐使用的cfusion_decrypt。我不确定应该如何替换它。