NodeJs加密-MD5哈希不正确

时间:2020-07-15 08:50:24

标签: javascript node.js md5 cryptojs

我有一个php示例,并尝试使用Crypto在NodeJs中重新创建它:

https://docs.paygate.co.za/?php#request

我的代码:

var encryptionKey = "secret";

  var data = {
    PAYGATE_ID: 10011072130,
    REFERENCE: "pgtest_20200713124029",
    AMOUNT: 100,
    CURRENCY: "ZAR",
    RETURN_URL: "https://google.com",
    TRANSACTION_DATE: "2020-07-13 12:40:29",
    LOCALE: "en",
    COUNTRY: "ZAF",
    EMAIL: "itsupport@paygate.co.za",
  };

  var CHECKSUM = crypto
    .createHash("md5")
    .update(JSON.stringify(data) + encryptionKey)
    .digest("hex");

他们期望的校验和:

e7d0f0d8e7066c968a5a2396cdea0c8f

我的代码生成的校验和:

2f3b1a8c8064b6bd58ee1d841e1c8050

从文档中,他们希望我在字符串的末尾附加秘密。我在做什么。

我不确定为什么我的校验和不正确,有任何提示吗?

1 个答案:

答案 0 :(得分:3)

JSON.stringify不等同于implode,请看一下结果值。我认为您可以在JavaScript中最接近的操作是Object.values(data).join("")

  var CHECKSUM = crypto
    .createHash("md5")
    .update(Object.values(data).join(""))
    .update(encryptionKey)
    .digest("hex");