SecretIndividual
SecretIndividual

Reputation: 2529

Different result in NodeJS calculating MD5 hash using crypo

I am trying to get the MD5 has from a number in NodeJS using crypto but I am getting a different hash returned then I get from site where I can calculate the has.

According to http://onlinemd5.com/ the MD5 has for 1092000 is AF118C8D2A0D27A1D49582FDF6339B7C.

When I try to calculate the hash for that number in NodeJS it gives me a different result (ac4d61a5b76c96b00235a124dfd1bfd1). My code:

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

Upvotes: 1

Views: 1074

Answers (1)

nanobar
nanobar

Reputation: 66405

If you convert it to a string normally it works:

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

See the difference:

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

If you console.log(this) in a Node env by default you will see that it is:

this = {} typeof = 'object'

this in a Node env is pointing at module.exports so you're calling this toString on the Object.prototype which is not the right thing to do a string conversion on anything other than module.exports.

Upvotes: 2

Related Questions