ColdFusion Url加密错误

时间:2015-12-09 18:13:45

标签: coldfusion coldfusion-11

我正在使用一些遗留代码试图替换在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。我不确定应该如何替换它。

0 个答案:

没有答案