使用Coldfusion 10解密gpg4Win加密的CSV

使用Coldfusion 10解密gpg4Win加密的CSV,csv,encryption,coldfusion,coldfusion-10,gnupg,Csv,Encryption,Coldfusion,Coldfusion 10,Gnupg,我正在尝试使用Coldfusion解密CSV。CSV已使用加密。我在CF Admin中创建了一个计划任务,该任务检查一个文件夹中的加密文件,如果找到,将其解密,并将结果作为CSV文件存储在另一个文件夹中(然后将其导入数据库) 这是代码的摘录: <cfparam name="Variables.InputFolderName" default="inputfolder" /> <cfparam name="Variables.Ou

我正在尝试使用Coldfusion解密CSV。CSV已使用加密。我在CF Admin中创建了一个计划任务,该任务检查一个文件夹中的加密文件,如果找到,将其解密,并将结果作为CSV文件存储在另一个文件夹中(然后将其导入数据库)

这是代码的摘录:

<cfparam name="Variables.InputFolderName" default="inputfolder" />
<cfparam name="Variables.OutputFolderName" default="outputfolder" />
<cfparam name="gKeyPassphrase" default="sampletestkey" />
<cfparam name="gEncryptionKeyID" default="sampletestid" />
<cfset inputFilePath = ExpandPath("/resources/uploads/csv/#Variables.InputFolderName#") />
<cfset outputpath = ExpandPath("/resources/uploads/#Variables.OutputFolderName#") />
<cftry>
    <cfdirectory directory="#inputFilePath#" name="Variables.EncryptedCSVFiles" filter="*.gpg" action="list" >
    <cffile action="read" file="#inputFilePath#\#name#" variable="Variables.EncryptedCSVData" />
    <cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2" arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID# ouputfile=#outputpath#/test.csv" timeout="300"></cfexecute>
 <cfcatch type="any">
    <!--- I tried emailing a cfdump of the error to myself but it didn't work --->
 </cfcatch>
</cftry>

当我手动运行计划程序时,“此计划任务已成功完成。”将在CF Admin中显示,但未创建解密文件,并且我也没有收到任何错误报告电子邮件

如果有人能帮我解决这个问题,我会非常感激的

谢谢。

(注意:我假设您首先从命令行验证了上述文件设置是否成功。如果没有,请先返回并执行此操作)

如果这是您的实际CF代码,那么它包含一些语法错误。
参数
属性后没有结束引号,而
输出文件
属性后没有开始引号(这也是拼写错误的)。因此,CF代码应该编译,但可能不会生成任何输出文件。尝试修复引号,您应该会得到一些输出,即使这只是一个错误:

<cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" 
       arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID#" 
       outputfile="#outputpath#/test.csv" 
       timeout="300">
</cfexecute>


另外,虽然我不熟悉gpg2,但快速搜索表明输出文件使用了
-o
参数。然而,在CF代码中,路径来自名为
#inputFilePath#
的变量,这似乎有点奇怪。假设这不仅仅是一个不幸的命名选择,您可能还需要检查您的文件路径。

感谢@Leigh更正了我的代码。我试过你的建议。它可以从命令行运行,但CF似乎挂起,浏览器一直试图加载页面。我用它作为替代品。它使用AES,我在使用CF解密时没有遇到任何问题。使用AxCrypt:
RE:但CF似乎挂起,可能正在等待输入?对于某些程序,最好将exe设置为参数并使用
/c
标志。看见如果你有时间,试试看,如果有任何变化,请告诉我。不管怎样,很高兴你找到了另一个选择。(编辑:您可能希望将您的最终代码作为“答案”发布,以使其更可见)。