golang

Golang Crypto-pakket

Golang Crypto-pakket
In deze les over het Crypto-pakket in Golang, zullen we verschillende voorbeelden bestuderen over het beheren en maken van Ciphers in Go en zien hoe het Crypto-pakket ons helpt met betrekking tot de programmeertaal Cipher Handling in Go. We gaan nu aan de slag.

beginnend met Go

Om er zeker van te zijn dat we op dezelfde pagina staan, is hier de directorystructuur die ik heb gemaakt voor mijn Hello World-programma:

Dit is het programma dat we hebben gemaakt:

pakket hoofd
importeer "fmt"
fun hoofd()
fmt.Printf("Hallo wereld.\n")

We kunnen het bovenstaande programma uitvoeren met de volgende opdracht:

ga rennen hallo.Gaan

Zodra we deze opdracht hebben uitgevoerd, is hier de uitvoer die u zult zien:

Nou dat ziet er goed uit. Laten we naar onze hoofdagenda gaan.

Crypto-pakket in Golang

Het gebruik van Crypto in Golang is niet erg gemakkelijk te begrijpen. Dit komt door de constructies die het biedt en het algoritme dat het volgt om codering en decodering te bereiken.

In deze les zullen we deze punten bestuderen:

Laten we beginnen met hashen en wachtwoorden vergelijken.

SHA256-codering

We beginnen met een beetje simpel. We zullen een heel eenvoudig voorbeeld proberen van het uitvoeren van een SHA256-codering met Golang. Laten we eens kijken naar het voorbeeld:

pakket hoofd
importeren (
"fmt"
"fouten"
"crypto/sha256"
"codering/base64"
)
fun hoofd()
someText := "sjoebham"
hash, err := hashTextTo32Bytes(someText)
fmt.Printf("%s\n %s", hash, err)

func hashTextTo32Bytes(hashThis string) (gehashte string, err error)
if len(hashThis) == 0
return "", fouten.Nieuw("Geen invoer meegeleverd")

hasher := sha256.Nieuw()
hasj.Write([]byte(hashThis))
stringToSHA256 := base64.URLEncoding.EncodeToString(hasher.Som (nul))
// Knip de lengte terug tot 32 bytes en keer terug.
return stringToSHA256[:32], nihil

We zijn in eerste instantie begonnen met het maken van een hasher. Hierna hebben we het gebruikt om de hash in een bytearray te schrijven. Ten slotte coderen we de string en retourneren de 32 bits hash.

Wanneer we dit voorbeeld uitvoeren, krijgen we de volgende uitvoer:

Hashing en overeenkomend wachtwoord

Nu zullen we eindelijk bcrypt gebruiken om gehashte wachtwoorden te maken. We houden de functies direct en eenvoudig.

We zullen ook een functie opnemen die het gehashte wachtwoord overeenkomt met een gegeven String. Op deze manier kunnen we ook bevestigen of het door de gebruiker opgegeven wachtwoord correct is.  Voordat u deze code uitvoert, moet u het golang-pakket voor bcrypt installeren met de volgende opdracht:

# ga "golang" halen.org/x/crypto/bcrypt"

Dan kun je deze code uitvoeren:

pakket hoofd
importeer "fmt"
import "golang".org/x/crypto/bcrypt"
func HashPassword(wachtwoordstring) (string, fout)
bytes, err := bcrypt.GenerateFromPassword([]byte(wachtwoord), 14)
return string(bytes), err

func CheckPasswordHash(wachtwoord, hashstring) bool
fout := bcrypt.CompareHashAndPassword([]byte(hash), []byte(wachtwoord))
return fout == nul

fun hoofd()
mijnPwd := "shubham"
mitsHash, _ := HashPassword(myPwd)
fmt.Println("Wachtwoord :", mijnWww)
fmt.Println("Hash :", mitsHash)
isMatch := CheckPasswordHash(myPwd, verstrektHash)
fmt.Println("Overeenkomend ?:", isMatch)

Wanneer we dit voorbeeld uitvoeren, krijgen we de volgende uitvoer:

Conclusie

In dit bericht hebben we eenvoudige maar nuttige voorbeelden bestudeerd over hoe we een cryptopakket kunnen gebruiken om acties uit te voeren die erg belangrijk en nuttig zijn in onze toepassingen.

Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...