Python body.encode () Javascript альтернатива - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь проверить веб-перехватчик, исходящий от Plaid в NodeJS, вычисляя Sha256 тела веб-перехватчика, и я следую Python коду здесь , где отображается код:

   # Compute the has of the body.
   m = hashlib.sha256()
   m.update(body.encode())
   body_hash = m.hexdigest() 

Какая альтернатива body.encode () в Javascript перед передачей его функции Sha256, пожалуйста? Обратите внимание, что тело, которое я получаю, представляет собой объект, содержащий следующие данные:

{error: null, item_id: '4zAGyokJ1XiWP63QNl1RuLZV76o55nudVXzNG',
new_transactions: 0, webhook_code: 'DEFAULT_UPDATE' : 'TRANSACTIONS'}

Однако я пытаюсь получить это ha sh:

b05ef560b59e8d8e427433c5e0f6a11579b5dfe6534257558b896f858007385a17

*1016*

1 Ответ

0 голосов
/ 06 мая 2020

Итак, если тело JSON (НЕ JSON СТРОКА) , вам нужно преобразовать его в строку и поместить в функцию .update, поскольку m.body принимает строку. Если ваше тело STRING , просто поместите его как есть.

Это из примера шифрования здесь :

const crypto = require('crypto');
const hash = crypto.createHash('sha256');

const stringBody = JSON.stringify(body);
hash.update(stringBody);
console.log(hash.digest('hex'));

Изменить:
Если ha sh не то же самое, возможно, вам нужно исправить новые строки или пробелы. Вам нужно сделать оба тела абсолютно одинаковыми. Здесь В приведенном ниже примере я использую ту же самую строку и кодировку с использованием Python AND NodeJS.

import hashlib
body = '{"error":null,"item_id":"4zAGyokJ1XiWP63QNl1RuLZV76o55nudVXzNG","new_transactions":0,"webhook_code":"DEFAULT_UPDATE","webhook_type":"TRANSACTIONS"}'
m = hashlib.sha256()
m.update(body.encode())
body_hash = m.hexdigest()
print(body_hash)

Вывод:

python3 file.py
26f1120ccaf99a383b7462b233e18994d0c06d4585e3fe9a91a449e97a1c03ba

И используя NodeJS:

const crypto = require('crypto');
const hash = crypto.createHash('sha256');
const body = {
  error: null,
  item_id: '4zAGyokJ1XiWP63QNl1RuLZV76o55nudVXzNG',
  new_transactions: 0,
  webhook_code: 'DEFAULT_UPDATE',
  webhook_type: 'TRANSACTIONS'
}

const stringBody = JSON.stringify(body);
hash.update(stringBody);
console.log(hash.digest('hex'));

Вывод:

node file.js
26f1120ccaf99a383b7462b233e18994d0c06d4585e3fe9a91a449e97a1c03ba
...