【问题标题】:SagePay AES form integrationSagePay AES 表单集成
【发布时间】:2013-11-18 07:15:23
【问题描述】:

我有一个有效的表单集成,但需要迁移到表单集成的 v 3.00,它需要 AES 编码而不是 Xor。示例代码是一个隐藏加密方法的 J2EE 应用程序。 SagePay 支持无法提供加密/解密的 API 类/方法;我怀疑它们在那里,是否有人使用过它们并可以就此提供建议?

另外,我正在尝试在自己的代码中进行加密。 SagePay 再次没有出现,因为他们没有提供足够的信息来说明加密是如何完成的。我相信我已经弄清楚他们提供的密码既用于加密密钥又用于 iv,尽管他们没有在集成指南中说明这一点。这是我尝试对 inString 进行编码的代码

        byte[] byteDataToEncrypt = inString.getBytes();
        final byte[] keyBytes = webSite.encryptionPassword().getBytes("ASCII");
        final byte[] ivBytes = webSite.encryptionPassword().getBytes("ASCII");
        final SecretKey key = new SecretKeySpec(keyBytes, "AES");
        final IvParameterSpec iv = new IvParameterSpec(ivBytes);
        final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

        cipher.init(Cipher.ENCRYPT_MODE, key, iv);
        byte[] byteCipherText = cipher.doFinal(byteDataToEncrypt);
        byte[] aesEncryptedBase64encoded = Base64.encodeBase64(byteCipherText);
            String crypt = "@" + new String(aesEncryptedBase64encoded);

我不知道为什么 @ 需要在前面,但我已经在其他代码中看到它已经在线发布用于 SagePay 集成。没有它,SagePay 测试服务器告诉我加密方法无法识别。有了它,它告诉我货币字段丢失,尽管我知道货币字段在源中设置为“GBP”并且我正在使用提供的测试服务器密码。

非常感谢来自 SagePay 或开发者社区的任何帮助。 约翰

【问题讨论】:

    标签: encryption aes opayo


    【解决方案1】:

    即使升级到 4.00 版也可以。版本 4.00 唯一需要不同的是它需要加密字符串为大写。因此,而不是

    String crypt = "@" + Hex.encodeHexString(byteCipherText);
    

    应该是

    String crypt = "@" + Hex.encodeHexString(byteCipherText).toUpperCase();
    

    最新的 Sagepay/Opayo 文档至少口头列出了所有需要的内容,即使它仍然不是很全面,连同这段代码,我也可以解决。 谢谢。

    【讨论】:

      【解决方案2】:

      对我有用的解决方案是替换它:

      byte[] aesEncryptedBase64encoded = Base64.encodeBase64(byteCipherText);
      String crypt = "@" + new String(aesEncryptedBase64encoded);
      

      有了这个

      String crypt = "@" + Hex.encodeHexString(byteCipherText);
      

      或者如果直接使用 SagePay API,只需将所有代码替换为这两行:

      byte[] aesEncrypted = CryptographyHelper.AESEncrypt(detail, "ISO-8859-1", password);  
      String crypt = "@" + Hex.encodeHexString(aesEncrypted);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        • 2015-11-02
        • 1970-01-01
        • 2013-11-08
        相关资源
        最近更新 更多