2 votes

NodeJs Crypto - Le hachage MD5 est incorrect

J'ai un exemple php et j'essaie de le recréer dans NodeJs en utilisant Crypto :

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

Mon code :

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");

La somme de contrôle qu'ils attendent :

e7d0f0d8e7066c968a5a2396cdea0c8f

La somme de contrôle que mon code génère :

2f3b1a8c8064b6bd58ee1d841e1c8050

D'après la documentation, ils attendent de moi ajouter le secret à la fin de la chaîne. C'est ce que je fais.

Je ne sais pas pourquoi ma somme de contrôle est incorrecte, des conseils ?

3voto

Jiří Pospíšil Points 4847

JSON.stringify n'est pas un équivalent de implode Jetez un coup d'œil aux valeurs qui en résultent. Je pense que la chose la plus proche que vous pouvez faire en JavaScript est Object.values(data).join("") .

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X