unhash password nodejs node hashing node.js go bcrypt

node.js - nodejs - node js password



Hash de contraseñas Bcrypt en Golang(compatible con Node.js)? (2)

Eche un vistazo al paquete bcrypt de go.crypto (los documentos están here ).

Para instalarlo, use

go get golang.org/x/crypto/bcrypt

(debe instalar mercurial para poder usar go get con code.google.com)

here puede encontrar una entrada de blog que describe el uso del paquete bcrypt. Es del tipo que escribió el paquete, por lo que debería funcionar;)

Una diferencia con la biblioteca node.js que está utilizando es que el paquete go no tiene una función genSalt (exportada), pero generará la sal automáticamente cuando llame a bcrypt.GenerateFromPassword.

Configuré un sitio con Node.js + pasaporte para autenticación de usuario.

Ahora necesito migrar a Golang, y necesito hacer la autenticación con las contraseñas de usuario guardadas en db.

El código de cifrado de Node.js es:

var bcrypt = require(''bcrypt''); bcrypt.genSalt(10, function(err, salt) { if(err) return next(err); bcrypt.hash(user.password, salt, function(err, hash) { if(err) return next(err); user.password = hash; next(); }); });

¿Cómo hacer la misma cadena hash como Node.js bcrypt con Golang?


Usando el paquete golang.org/x/crypto/bcrypt , creo que el equivalente sería:

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)

Ejemplo de trabajo:

package main import ( "golang.org/x/crypto/bcrypt" "fmt" ) func main() { password := []byte("MyDarkSecret") // Hashing the password with the default cost of 10 hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Println(string(hashedPassword)) // Comparing the password with the hash err = bcrypt.CompareHashAndPassword(hashedPassword, password) fmt.Println(err) // nil means it is a match }