Другой результат в NodeJS, вычисляющем хеш MD5 с использованием crypo - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь получить MD5 от числа в NodeJS, используя криптографию, но я получаю другой хэш, возвращенный, тогда я получаю с сайта, где я могу вычислить значение.

Согласно http://onlinemd5.com/ MD5 имеет для 1092000 AF118C8D2A0D27A1D49582FDF6339B7C.

Когда я пытаюсь вычислить хеш для этого числа в NodeJS, он дает мне другой результат (ac4d61a5b76c96b00235a124dfd1bfd1). Мой код:

const crypto = require('crypto');
const num = 1092000;
const hash = crypto.createHash('md5').update(toString(num)).digest('hex');
console.log(hash);

1 Ответ

2 голосов
/ 30 октября 2019

Если вы преобразуете его в строку, как обычно, это работает:

const hash = crypto.createHash('md5').update(String(num)).digest('hex'); // or num.toString()

См. Разницу:

toString(num) = [object Undefined]
(1092000).toString() = "1092000"

Если вы console.log(this) в Env-узле по умолчанию, вы увидитечто это:

this = {} typeof = 'object'

this в узле env указывает на module.exports, поэтому вы называете это toString на Object.prototype, что не является правильнымсделать преобразование строки на что-либо, кроме module.exports.

...