Encryption 加密信用卡字符串时ColdFusion cfc cfquery失败

Encryption 加密信用卡字符串时ColdFusion cfc cfquery失败,encryption,coldfusion,aes,cfc,cfquery,Encryption,Coldfusion,Aes,Cfc,Cfquery,我在.cfm页面中有一个表单,它使用jquery验证表单,并通过.ajax将值传递给ColdFusion cfc。这一切都有效。 下面是我的组件代码,仅显示相关问题 <cfcomponent displayName="2014 Registration"> <cfset this.encryptionKey = generateSecretKey('AES') /> <cffunction name="confregistration" output="fal

我在.cfm页面中有一个表单,它使用jquery验证表单,并通过.ajax将值传递给ColdFusion cfc。这一切都有效。 下面是我的组件代码,仅显示相关问题

<cfcomponent displayName="2014 Registration">
 <cfset this.encryptionKey = generateSecretKey('AES') />

 <cffunction name="confregistration" output="false" access="remote" returnType="string">

 <cfargument name="cc" required="true" type="string"/>
 <cfargument name="cvv" required="true" type="string"/>

<cfquery datasource="#application.datasource#">
       INSERT INTO  table_name(cc,cvv)
         values(<cfqueryparam cfsqltype="cf_sql_varchar" value="#encrypt(arguments.cc, THIS.encryptionKey)#"/>,
        <cfqueryparam cfsqltype="cf_sql_varchar" value="#encrypt(arguments.cvv, this.encryptionKey)#"/>) 
     </cfquery>


 <cfset message = 'Thank you ' & #encrypt(arguments.cc, THIS.encryptionKey)# />
 <cfreturn #message# />

 </cffunction>
</cfcomponent>

插入表格名称(cc、cvv)
值(,
) 
这使得插入完全失败。在测试我是否删除了加密行时,查询执行它的任务并将其发布到数据库。 如果我也删除了查询,但返回的消息仅包含:encrypt(arguments.cc,THIS.encryptionKey),我可以看到加密字符串

我刚接触coldfusion,但已经使用了好几个月了。我发现了一些关于变量和使用#围绕变量的怪癖。在某些情况下需要,但在其他情况下不需要? 我的表单工作,如果未加密,组件函数将传递arguments.cc值。所以我很接近,但似乎有些奇怪。
关于什么可能导致具有加密值的cfparam失败的任何提示?

是否确定这不是数据库中的错误,可能是字段太短?您能从应用程序日志中发布错误吗?“表_名称(cc,cvv)”-您不能存储cvv编号!您不应该在数据库中存储CC或CVV信息,尤其是在未对其进行哈希处理的情况下(“加密”数据意味着“解密”,哈希是一种方式)。这是一个巨大的错误,并使您的公司/客户面临责任问题。您将面临PCI合规噩梦,并可能面临巨额罚款。您的答案中缺少的一件事是实际抛出的消息。我将(疯狂地)猜测,您在数据库中的列对于CC和/或CVV来说足够长,但是当加密时,它们会抛出一个数据截断错误。告诉我数据库中列的长度以及加密字符串与非加密字符串的长度。