Encryption 使用CFML-AES加密的SagePay V3表单集成

Encryption 使用CFML-AES加密的SagePay V3表单集成,encryption,coldfusion,aes,opayo,openbd,Encryption,Coldfusion,Aes,Opayo,Openbd,除了加密之外,我已经成功地完成了整个表单集成 版本3需要AES加密,我不知道如何实现这个阶段 在此之前,CFML脚本在结尾使用以下命令构造了crypt字段: //** call to include file to encrypt crypt = base64Encode (SimpleXor(stuff,EncryptionPassword)); 这将调用执行实际工作的函数文件 我需要的帮助是在function.cfm文件中创建一个新脚本,以及调用的内容 有人能帮忙吗 干杯 下面是一段代码:

除了加密之外,我已经成功地完成了整个表单集成

版本3需要AES加密,我不知道如何实现这个阶段

在此之前,CFML脚本在结尾使用以下命令构造了crypt字段:

//** call to include file to encrypt
crypt = base64Encode (SimpleXor(stuff,EncryptionPassword));
这将调用执行实际工作的函数文件

我需要的帮助是在function.cfm文件中创建一个新脚本,以及调用的内容

有人能帮忙吗

干杯

下面是一段代码:

<cfscript>

ThisVendorTxCode = "#sfo_id#";

ThisVendorName = "pivotell";

stuff = "VendorTxCode=" & ThisVendorTxCode & "&";

stuff = stuff & "VendorName=" & ThisVendorName & "&";

</cfscript>

<cfset encryptionKey = generateSecretKey( "AES" ) />

//** call to include file to encrypt

<cfset crypt = encrypt(stuff,encryptionKey,"AES","hex") />

<cfoutput>

<form action="https://test.sagepay.com/gateway/service/vspform-register.vsp" method="post" id="form1" name="form1">

<input type="hidden" name="VPSProtocol" value="3.00">

<input type="hidden" name="TxType" value="PAYMENT">

<input type="hidden" name="Crypt" value="#crypt#">

</form>

</cfoutput>

ThisVendorxcode=“#sfo#U id#”;
ThisVendorName=“pivotell”;
stuff=“VendorTxCode=”&此VendorTxCode&“&”;
stuff=stuff&“VendorName=”&此VendorName&“&”;
//**调用以包含要加密的文件

为了简单起见,我删节了全部内容。

我花了3天3夜才弄明白这一点。 请阅读报告第37页

A1.1地下室字段

  • Crypt字段应包含纯文本形式的所有其他事务信息,如名称=值字段,以“&”分隔 人物。确保所有必填字段都存在,并且 “&”字符后没有空格

  • 然后,应在CBC模式下使用AES(块大小128位)对该字符串进行加密,并使用提供的密码作为PKCS#5填充 键和初始化向量,并将结果编码为十六进制 (确保字母大写)

  • 在编码结果的开头加上“@”符号

  • 连同。它应该对它进行分类

    。。。由于密码字符串不是base64编码的,因此生成的密钥 长度太小,即(12)字节而不是(16)字节。。。解决办法是 要先对其进行base64编码。。。此外,iv参数应该是二进制的

      <cfset keyIVBytes = charsetDecode(yourKeyString, "utf-8")>
      <cfset base64Key = binaryEncode(keyIVBytes, "base64")>
    
      <cfset result = encrypt(plainString, base64Key,"AES/CBC/PKCS5Padding", "hex", keyIVBytes)>
    
    
    

    欢迎来到S.O.如文所述,您的问题是,并且有被关闭的风险。1) 到目前为止,您尝试了什么代码?2) 你遇到了什么错误?3) 你查过档案了吗?有一种方法可能会给你一个起点。另外,如果该API有一个公共url,那么将其包含在上面也不会有什么坏处。另请注意,如果您使用的是ACF,最好也包含
    [coldfusion]
    标记,以吸引更多的读者。这里的代码示例有用吗?[[1]:这仍然太宽泛。首先,请发布一个指向您正在使用的API的链接。我们需要知道您获得的确切加密规范。加密“密钥”大小、“模式”以及是否向您提供了“密钥”和“iv”价值是所有相关的信息-你没有提供;-)第二,你读了上面的链接吗?在不知道更多的情况下,我猜你可能会犯一些与其他线程相同的错误。欢迎来到S.O。虽然上面的链接包含了答案,但最好也包括一个简短的摘要,而不仅仅是链接。因为当链接改变或中断时,答案变得毫无意义。顺便说一句,我没有投反对票,但我怀疑这是因为原始答案的链接性质。