0

我有以下脚本试图从我的数据库中选择一些项目并解密加密的项目,问题是加密密钥是唯一的,company_id我在表中进行了更改:

<cfset request.ek = "password">
<!-- <cfset encKey = encrypt(request.ek, company_id)> -->
<!-- <cfset decrypted = decrypt(urldecode(arguments.mystring), encKey)> -->

<cfquery name="header" datasource="MyDB">
    SELECT TOP 10
        ID,
        company_id,
        encString
    FROM 
        dbo.[TableName];
</cfquery>

<cfoutput>ID|company_id|encString<br></cfoutput>

<cfloop query="header">
    <cfoutput>#ID#|#company_id#|#decrypt(urldecode(encString, encrypt(request.eq, company_id)))#<br></cfoutput>
</cfloop>

我收到此错误:

Parameter validation error for the DECRYPT function.
The function accepts 2 to 6 parameters.

编辑。感谢 Scott Stroz,我真的把括号弄乱了。我的代码应该是:

<cfset request.ek = "password">
<!-- <cfset encKey = encrypt(request.ek, company_id)> -->
<!-- <cfset decrypted = decrypt(urldecode(arguments.mystring), encKey)> -->

<cfquery name="header" datasource="MyDB">
    SELECT TOP 10
        ID,
        company_id,
        encString
    FROM 
        dbo.[TableName];
</cfquery>

<cfoutput>ID|company_id|encString<br></cfoutput>

<cfloop query="header">
    <cfoutput>#ID#|#company_id#|#decrypt(urldecode(encString), encrypt(request.eq, company_id))#<br></cfoutput>
</cfloop>
4

1 回答 1

3

您在代码示例末尾附近对 decrypt() 的调用只有 1 个参数。看起来你的括号可能有问题。

看起来像:

decrypt(urldecode(encString, encrypt(request.eq, company_id)))

可能需要:

decrypt(urldecode(encString), encrypt(request.eq, company_id))

假设

  1. 您在数据库中加密的字符串然后在插入之前进行了 url 编码。
  2. 您使用密钥加密字符串(使用密钥request.eq加密company_id)。
于 2013-04-01T14:25:46.567 回答