用Coldfusion 10解密gpg4Win加密的CSV

时间:2013-07-25 22:08:12

标签: csv encryption coldfusion coldfusion-10 gnupg

我正在尝试使用Coldfusion解密CSV。 CSV已使用gpg4win加密。我在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中,但未创建解密文件,我也没有收到任何错误报告电子邮件。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

如果这是您的实际CF代码,则它包含一些语法错误。 arguments属性后没有结束引号,outputfile属性后也没有引号(也是拼写错误)。所以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#的变量,这似乎有点奇怪。假设它不仅仅是一个不幸的命名选择,您可能还想检查文件路径。