Sharan Mohandas Sharan Mohandas - 4 years ago 192
Node.js Question

Converting a Password Hashing Script from GO to Nodejs

I have a hard time converting an existing GO script to NodeJS. It basically a hashing script which takes in 2 arguments agreedUponKey and salt and returns a password hash.

package main

import (
"fmt"
"hash"
"crypto/sha256"
)

func main() {
var agreedUponKey string
var salt string
var h hash.Hash

agreedUponKey = "giri"
salt = "XYZabc987"

h = sha256.New()
h.Write([]byte(agreedUponKey))
h.Write([]byte(salt))

sha256Sum := h.Sum(nil)
print("calculated passwordHash:", sha256Sum)

var hexHash = make([]byte, 0, 64)
for _, v := range sha256Sum {
hexHash = append(hexHash,[]byte(fmt.Sprintf("%02x", v))...)
}

print("calculated passwordHash:", string(hexHash))
}


I have managed to code up to the below point

var crypto = require('crypto');
var convert = require('convert-string');

function test(pwd,key) {
console.log("Password :",pwd);
var byteKey=convert.stringToBytes(key);
var bytePwd=convert.stringToBytes(pwd);
var hash = crypto.createHash('sha256').update(byteKey+bytePwd).digest('base64');
console.log("hashcode of password :",hash);
};
test("XYZabc987","giri");


The 2 hashes are different. Any help would be greatly appreciated. I am a Noob in GO Lang

Please Note : You can use https://play.golang.org/ to compile and run the Go Script

Answer Source
var crypto = require('crypto');
function test(pwd, key) {
    var input = key.concat(pwd)
    var hash = crypto.createHash('sha256').update(input).digest('hex');
    console.log("hashcode of password :", hash);
};
test("XYZabc987", "giri");

You could verify the correct hash using this online tool.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download