Beginnend mit Go
Nur um sicherzustellen, dass wir auf der gleichen Seite sind, hier ist die Verzeichnisstruktur, die ich für mein Hello World-Programm erstellt habe:
Hier ist das von uns erstellte Programm:
Hauptpaket"fmt" importieren
func main()
fmt.Printf("Hallo Welt.\n")
Wir können das obige Programm mit dem folgenden Befehl ausführen:
geh laufen hallo.gehenSobald wir diesen Befehl ausführen, sehen Sie hier die Ausgabe:
Das sieht jetzt gut aus. Kommen wir zu unserer Hauptagenda.
Krypto-Paket in Golang
Die Verwendung von Crypto in Golang ist nicht sehr leicht zu verstehen. Dies liegt an den bereitgestellten Konstrukten und dem Algorithmus, dem er folgt, um eine Verschlüsselung und Entschlüsselung zu erreichen.
In dieser Lektion werden wir diese Punkte untersuchen:
- SHA256-Verschlüsselung
- So verwenden Sie bcrypt zum Verschlüsseln von Strings wie Passwörtern in Ihren Webanwendungen
- Verwenden von AES-Verschlüsselung und -Entschlüsselung
Beginnen wir mit dem Hashing und dem Vergleich von Passwörtern.
SHA256-Verschlüsselung
Wir beginnen mit etwas einfach. Wir werden ein sehr einfaches Beispiel ausprobieren, wie man eine SHA256-Verschlüsselung mit Golang . durchführt. Schauen wir uns das Beispiel an:
Hauptpaketimportieren (
"fmt"
"Fehler"
"crypto/sha256"
"kodierung/base64"
)
func main()
someText := "shubham"
hash, err := hashTextTo32Bytes(someText)
fmt.Printf("%s\n %s", hash, err)
func hashTextTo32Bytes(hashThis string) (gehashter String, Fehlerfehler)
if len(hashThis) == 0
Rückgabe "", Fehler.New("Keine Eingabe bereitgestellt")
hasher := sha256.Neu()
hasher.Schreiben([]byte(hashThis))
stringToSHA256 := base64.URL-Codierung.EncodeToString(Hasher.Summe (null))
// Reduziere die Länge auf 32 Byte und kehre zurück.
return stringToSHA256[:32], nil
Wir haben zunächst mit der Erstellung eines Hashers begonnen. Anschließend haben wir damit den Hash in ein Byte-Array geschrieben. Schließlich codieren wir den String und geben die 32 Bit Hash zurück.
Wenn wir dieses Beispiel ausführen, erhalten wir die folgende Ausgabe:
Hashing und Abgleich von Passwörtern
Jetzt werden wir endlich bcrypt verwenden, um gehashte Passwörter zu erstellen. Wir werden die Funktionen direkt und einfach halten.
Wir werden auch eine Funktion einfügen, die das gehashte Passwort mit einem bestimmten String abgleicht. Auf diese Weise können wir auch überprüfen, ob das vom Benutzer angegebene Passwort korrekt ist. Bevor dieser Code ausgeführt wird, muss das Golang-Paket für bcrypt mit dem folgenden Befehl installiert werden:
# geh "golang .".org/x/crypto/bcrypt"Dann können Sie diesen Code ausführen:
Hauptpaket"fmt" importieren
"golang . importieren.org/x/crypto/bcrypt"
func HashPassword(Passwort-String) (String, Fehler)
Bytes, err := bcrypt.GenerateFromPassword([]Byte(Passwort), 14)
Rückgabestring (Bytes), err
func CheckPasswordHash(Passwort, Hash-String) bool
err := bcrypt.CompareHashAndPassword([]Byte(Hash), []Byte(Passwort))
Rückgabefehler == null
func main()
myPwd := "shubham"
bereitgestelltHash, _ := HashPassword(myPwd)
fmt.Println("Passwort:", myPwd)
fmt.Println("Hash:", bereitgestelltHash)
isMatch := CheckPasswordHash(myPwd, bereitgestellterHash)
fmt.Println("Matched ?:", isMatch)
Wenn wir dieses Beispiel ausführen, erhalten wir die folgende Ausgabe:
Fazit
In diesem Beitrag haben wir einfache, aber nützliche Beispiele dafür untersucht, wie wir Krypto-Pakete verwenden können, um Aktionen durchzuführen, die in unseren Anwendungen sehr wichtig und nützlich sind.