NodeJs Crypto - MD5 哈希不正确
NodeJs Crypto - MD5 Hash is incorrect
我有一个 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
根据文档,他们希望我在字符串末尾附加秘密。我正在做的。
我不确定为什么我的校验和不正确,有什么提示吗?
JSON.stringify
不等同于 implode
,请查看结果值。我认为您可以在 JavaScript 中做的最接近的事情是 Object.values(data).join("")
.
var CHECKSUM = crypto
.createHash("md5")
.update(Object.values(data).join(""))
.update(encryptionKey)
.digest("hex");
我有一个 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
根据文档,他们希望我在字符串末尾附加秘密。我正在做的。
我不确定为什么我的校验和不正确,有什么提示吗?
JSON.stringify
不等同于 implode
,请查看结果值。我认为您可以在 JavaScript 中做的最接近的事情是 Object.values(data).join("")
.
var CHECKSUM = crypto
.createHash("md5")
.update(Object.values(data).join(""))
.update(encryptionKey)
.digest("hex");