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 hoofdimporteer "fmt"
fun hoofd()
fmt.Printf("Hallo wereld.\n")
We kunnen het bovenstaande programma uitvoeren met de volgende opdracht:
ga rennen hallo.GaanZodra 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:
- SHA256-codering
- Hoe bcrypt te gebruiken om strings zoals wachtwoorden in uw webapplicaties te coderen
- AES-codering en decodering gebruiken
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 hoofdimporteren (
"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 hoofdimporteer "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.