Pakiet Golang Crypto

Pakiet Golang Crypto
W tej lekcji na temat pakietu kryptograficznego w Golang będziemy zbadać różne przykłady zarządzania i tworzenia szyfrów w Go i zobaczymy, jak pakiet kryptograficzny pomaga nam w zakresie obsługi szyfru w języku programowania Go. Zaczniemy teraz.

Zaczynając od Go

Aby upewnić się, że jesteśmy na tej samej stronie, oto struktura katalogu, którą stworzyłem dla mojego programu Hello World:

Oto program, który stworzyliśmy:

Pakiet Main
importować „fmt”
func main ()
fmt.Printf („Cześć, świat.\N")

Możemy uruchomić powyższy program z następującym poleceniem:

idźcie, cześć.Iść

Po uruchomieniu tego polecenia oto wyjście, które zobaczysz:

Teraz to wygląda dobrze. Przejdźmy do naszego głównego programu.

Pakiet kryptograficzny w Golang

Używanie krypto w Golang nie jest łatwe do zrozumienia. Wynika to z konstruktów, które zapewnia, i algorytm, który podąża, aby osiągnąć szyfrowanie i deszyfrowanie.

W tej lekcji przestudiujemy te punkty:

  • Szyfrowanie SHA256
  • Jak używać bcrypt do szyfrowania ciągów takich jak hasła w aplikacjach internetowych
  • Korzystanie z szyfrowania i deszyfrowania AES

Zacznijmy od mieszania i porównywania haseł.

Szyfrowanie SHA256

Zaczniemy od nieco prosty. Spróbujemy bardzo prostego przykładu, jak wykonać szyfrowanie SHA256 za pomocą Golang. Spójrzmy na przykład:

Pakiet Main
import (
„FMT”
„Błędy”
„Crypto/SHA256”
„kodowanie/base64”
)
func main ()
kiedyś: = „Shubham”
Hash, err: = hashtextto32Bytes (czas)
fmt.Printf („ %s \ n %s”, hasz, err)

FUNC HASHTEXTTO32BYTETES (HASHTHIS STRING) (HASHED STRING, ERR ERROR)
Jeśli Len (Hashthis) == 0
powrót „”, błędy.NOWOŚĆ („Brak danych wejściowych”)

Hasher: = SHA256.Nowy()
Hasher.Write ([] bajt (hashthis))
StringTosha256: = base64.URLENCODING.Enkodetostring (Hasher.Suma (zerowa))
// Zetrzyj długość do 32 bajtów i wróć.
return StringTosha256 [: 32], zero

Zaczęliśmy od początkowo utworzenia Hashera. Następnie użyliśmy go do napisania skrótu w tablicy bajtowej. Na koniec kodujemy ciąg i zwracamy 32 bity skrótu.

Po uruchomieniu tego przykładu otrzymamy następujące dane wyjściowe:

Hasło i pasujące hasło

Teraz w końcu użyjemy BCRYPT do tworzenia hasła hashed. Zachowamy funkcje bezpośrednio i proste.

Uwzględnimy również funkcję, która pasuje do hasła do danego ciągu. W ten sposób możemy również potwierdzić, czy hasło dostarczone przez użytkownika jest poprawne. Przed uruchomieniem ten kod będzie musiał zainstalować pakiet Golang dla BCRYPT za pomocą następującego polecenia:

# idź dostaj ”golang.org/x/crypto/bcrypt "

Następnie możesz wykonać ten kod:

Pakiet Main
importować „fmt”
Importuj „Golang.org/x/crypto/bcrypt "
FUNC HASHPASSWORD (String Password) (ciąg, błąd)
bajty, err: = bcrypt.GenerateFompassword ([] bajt (hasło), 14)
zwracaj ciąg (bajty), err

FUNC CheckPasswordhash (hasło, ciąg Hash) Bool
err: = bcrypt.Porównaj wartość ([] bajt (Hash), [] bajt (hasło))
return err == zero

func main ()
mypwd: = "Shubham"
Servelhash, _: = hashpassword (mypwd)
fmt.Println („hasło:”, mypwd)
fmt.Println („Hash:”, Eversivehash)
ismatch: = candsPasswordhash (mypwd, eversivehash)
fmt.Println („dopasowany ?: ", Ismatch)

Po uruchomieniu tego przykładu otrzymamy następujące dane wyjściowe:

Wniosek

W tym poście studiowaliśmy proste, ale przydatne przykłady, w jaki sposób możemy używać pakietu kryptograficznego do działania działań bardzo ważnych i przydatnych w naszych aplikacjach.