--- title: "Encrypt passwords with Go" date: 2020-02-26 draft: false tags: ["programming","golang","go","crypt","snippets"] --- Go already has many helpful packages from the start. One of them is the bcrypt package with which e.g. will encrypt passwords securely. ```go package main import ( "fmt" "golang.org/x/crypto/bcrypt" ) func main() { pw := "SecretPassword" bs, err := bcrypt.GenerateFromPassword([]byte(pw), 2) //let's look at the encrypted password fmt.Printf("encryption result: %s\n", string(bs)) err = bcrypt.CompareHashAndPassword(bs, []byte(pw)) if err != nil { fmt.Println("Wrong! Wrong! Wrong!") } } ``` [Try it out](https://play.golang.org/p/jxoTHhAPQ5G) We pass our password to the function GenerateFromPassword([]byte(pw), 2) as a slice of byte. The second argument is the cost for the encryption as an integer. The higher the costs the longer the encryption will take. The encryption will also be more secure if calculated with a higher cost value. If we pass a 0 bcrypt will use a standard value for the cost. Pretty easy so far 😊