Inhalt

Kennwörter in Go verschlüsseln

Inhalt

Go hat von vorne herein bereits viele hilfreiche Pakete. Eines davon ist das Paket bcrypt mit dem sich z.B. Kennwörter sicher verschlüsseln lassen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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!")
	} 
}

Code ausprobieren

Wir übergeben der Funktion GenerateFromPassword([]byte(pw), 2) unser Kennwort als slice vom Typ Byte, sowie einen Integer für das zweite Funktionsargument cost. Je höher die Zahl ist desto höher die “Kosten” für die Berechnung. Das bedeutet, dass die Verschlüsselung bei einer höheren Zahl länger braucht, aber auch sicherer ist. Wenn wir eine 0 als Kosten übergeben nimmt bcrypt einen Standardwert für die Berechnung.

Eigentlich alles recht easy 😊