Startende med Go
Bare for at sikre, at vi er på samme side, her er katalogstrukturen, som jeg lavede til mit Hello World-program:
Her er det program, vi oprettede:
pakke hovedimporter "fmt"
funk main ()
fmt.Printf ("Hej verden.\ n ")
Vi kan køre ovenstående program med følgende kommando:
gå løb hej.gåNår vi har kørt denne kommando, er det output, du vil se:
Nu ser det godt ud. Lad os gå til vores hoveddagsorden.
Kryptopakke i Golang
Brug af Crypto i Golang er ikke særlig let at forstå. Dette skyldes de konstruktioner, den giver, og algoritmen, den følger for at opnå kryptering og dekryptering.
I denne lektion vil vi studere disse punkter:
- SHA256-kryptering
- Sådan bruges bcrypt til at kryptere strenge som adgangskoder i dine webapplikationer
- Brug af AES-kryptering og dekryptering
Lad os starte med Hashing og sammenligne adgangskoder.
SHA256 Kryptering
Vi starter med noget simpelt. Vi vil prøve et meget simpelt eksempel på, hvordan man udfører en SHA256-kryptering ved hjælp af Golang. Lad os se på eksemplet:
pakke hovedimport (
"fmt"
"fejl"
"krypto / sha256"
"kodning / base64"
)
funk main ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", hash, err)
func hashTextTo32Bytes (hashThis string) (hashed string, err error)
hvis len (hashThis) == 0
return "", fejl.Ny ("Ingen input leveret")
hasher: = sha256.Ny()
hasher.Skriv ([] byte (hashThis))
stringToSHA256: = base64.URLE-kodning.EncodeToString (hasher.Summen (nul))
// Klip længden ned til 32 byte, og vend tilbage.
return stringToSHA256 [: 32], nul
Vi startede med at oprette en hasher oprindeligt. Efter dette brugte vi det til at skrive hashen i et byte-array. Endelig koder vi strengen og returnerer de 32 bit hash.
Når vi kører dette eksempel, får vi følgende output:
Hashing og Matching Password
Nu bruger vi endelig bcrypt til at producere Hashed-adgangskoder. Vi holder funktionerne direkte og enkle.
Vi inkluderer også en funktion, der matcher den hashede adgangskode til en given streng. På denne måde kan vi også bekræfte, om adgangskoden fra brugeren er korrekt. Før du kører denne kode, skal du installere golang-pakken til bcrypt med følgende kommando:
# go get "golang.org / x / crypto / bcrypt "Derefter kan du udføre denne kode:
pakke hovedimporter "fmt"
importer "golang.org / x / crypto / bcrypt "
func HashPassword (adgangskodestreng) (streng, fejl)
bytes, err: = bcrypt.GenerateFromPassword ([] byte (password), 14)
return streng (bytes), err
func CheckPasswordHash (adgangskode, hashstreng) bool
err: = bcrypt.CompareHashAndPassword ([] byte (hash), [] byte (password))
return err == nul
funk main ()
myPwd: = "shubham"
providedHash, _: = HashPassword (myPwd)
fmt.Println ("Adgangskode:", myPwd)
fmt.Println ("Hash:", forudsat Hash)
isMatch: = CheckPasswordHash (myPwd, forudsatHash)
fmt.Println ("Matchet ?: ", isMatch)
Når vi kører dette eksempel, får vi følgende output:
Konklusion
I dette indlæg studerede vi enkle, men nyttige eksempler på, hvordan vi kan bruge kryptopakke til at udføre handlinger, der er meget vigtige og nyttige i vores applikationer.