Home > Enterprise >  Conversion from buffer to string gives different results in c# and Nodejs
Conversion from buffer to string gives different results in c# and Nodejs

Time:01-06

I'm trying to convert this function from C# to node but I'm getting different results when I try to convert a buffer to a string.

string str = "34924979";
System.Security.Cryptography.SHA512 sha = new System.Security.Cryptography.SHA512Managed();
byte[] ba = System.Text.Encoding.ASCII.GetBytes(str);
byte[] data= sha.ComputeHash(ba);
Console.WriteLine(System.Text.Encoding.ASCII.GetString(data));


>> `?????gV)????∟?Z?s??v$We-??N?"?w????0??\i♠G???

that's what i'm trying to do.

const crypto = require('crypto')

const str = '34924979';
const sha = crypto.createHash('sha512').update(str).digest('utf8');
const hash = sha.toString('utf-8').replace(/\uFFFD/g, '?');
console.log(hash);

>> `????gV)????∟?Z?v$We-??N?"?w????0?\i♠Gߕ?

CodePudding user response:

You're using different encodings in C# and JS.

Try changing the JS code to the following:

const sha = crypto.createHash('sha512').update(str).digest('ascii');
const hash = sha.toString('ascii');
  • Related