【问题标题】:live encryption key not working after upgrading to VPS protocol 3.00升级到 VPS 协议 3.00 后实时加密密钥不起作用
【发布时间】:2015-07-21 01:17:28
【问题描述】:

类似于this question,我已经迁移了一个站点以使用 VPS 协议 3.00。 我已经使用测试加密密钥对测试站点进行了测试,并且一切正常。当我将其切换为使用带有实时加密密钥的实时站点时,我得到了可怕的3045 : The Currency field is missing 错误。

在使用 VPS 协议 2.22 时,相同的加密密钥在实时站点上有效,但在切换到 3.00 时无效。

我还将发布数据提供给一个解密脚本,该脚本使用相同的密钥解密crypt,没有问题。

谁能想到为什么代码可以针对test.,而不是live. 使用适当的密钥,或者为什么2.22 接受密钥而3.0 不接受? live. 是否对 3.00 进行任何额外的检查,而 test. 没有?

我的代码稍微修改了集成套件中的功能:

function addPKCS5Padding($input) {
  $blockSize = 16;
  $padd = "";

  // Pad input to an even block size boundary.
  $length = $blockSize - (strlen($input) % $blockSize);
  for ($i = 1; $i <= $length; $i++) {
    $padd .= chr($length);
  }

  return $input . $padd;
}

// AES encryption, CBC blocking with PKCS5 padding then HEX encoding.
function sagepay_encrypt($string, $key) {
  // Add PKCS5 padding to the text to be encrypted.
  $string = addPKCS5Padding($string);

  // Perform encryption with PHP's MCRYPT module.
  $crypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $key);

  // Perform hex encoding and return.
  return "@" . strtoupper(bin2hex($crypt));
}

通过填充$crypt_values数组并调用:

$crypt_source = sagepay_buildcrypt($crypt_values);
$crypt = sagepay_encrypt($crypt_source, $sagepay_key);

$crypt_source 在所有情况下都是有效的并且(大部分)相同:

VendorTxCode=20150721020857Deannatest&VendorData=Deanna test&Amount=1&Currency=GBP&Description=Quote Reference Deanna test&BillingSurname=Earley&BillingFirstnames=Deanna&BillingAddress1.....

【问题讨论】:

  • 如果需要,我可以授予对测试站点的访问权限并演示所有组合。
  • 如果您能提供供应商名称,我可以为您调查...

标签: php opayo


【解决方案1】:

查看加密密码,它太短了一个字符。我已通过在末尾添加“X”(大写)来更新它,因此只需相应地更新您的值。

我试过了,现在很好。

我假设您使用以“3Gd”开头的密码(如果不告诉我)。

【讨论】:

  • 对于遇到此问题的其他任何人 - 您的加密密钥应为 16 个字符。如果不是,您需要联系 Sage Pay
  • 谢谢,将 X 附加到有效的密钥上。我认为这也会破坏 XOR 方法?
  • 是的。从现在开始,您需要确保 XOR 和 AES 使用相同的密码(尽管 Sage Pay 将在 10 天内关闭 XOR 方面)
  • 谢谢,我们的实时站点已使用新密钥进行了更新,两个站点上的一切都在运行。
猜你喜欢
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
相关资源
最近更新 更多