Počevši od Go
Samo da bismo bili sigurni da smo na istoj stranici, evo strukture direktorija koju sam napravio za svoj program Hello World:
Evo programa koji smo stvorili:
paket glavniuvoz "fmt"
func main ()
fmt.Printf ("Zdravo, svijete.\ n ")
Gornji program možemo pokrenuti sljedećom naredbom:
idi trči zdravo.ićiJednom kada pokrenemo ovu naredbu, evo izlaza koji ćete vidjeti:
Sad to izgleda dobro. Prijeđimo na naš glavni dnevni red.
Kripto paket u Golangu
Korištenje Cryptoa u Golangu nije baš lako razumjeti. To je zbog konstrukcija koje pruža i algoritma koji slijedi za postizanje šifriranja i dešifriranja.
U ovoj ćemo lekciji proučiti ove točke:
- Šifriranje SHA256
- Kako koristiti bcrypt za šifriranje nizova poput lozinki u vašim web aplikacijama
- Korištenje AES šifriranja i dešifriranja
Krenimo od raspršivanja i usporedbe lozinki.
SHA256 Šifriranje
Započet ćemo s pomalo jednostavnim. Pokušat ćemo vrlo jednostavan primjer kako izvesti SHA256 enkripciju pomoću Golanga. Pogledajmo primjer:
paket glavniuvoz (
"fmt"
"pogreške"
"kripto / sha256"
"kodiranje / baza64"
)
func main ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Ispisf ("% s \ n% s", heš, pogreška)
func hashTextTo32Bytes (hashThis string) (hashed string, error error)
ako je len (hashThis) == 0
povratak "", pogreške.Novo ("Nije dostavljen ulaz")
hasher: = sha256.Novi()
mašina za mljevenje mesa.Zapiši ([] bajt (hashThis))
stringToSHA256: = baza64.URLEncoding.EncodeToString (hasher.Zbroj (nula))
// Smanjimo duljinu na 32 bajta i vratimo.
vrati stringToSHA256 [: 32], nil
U početku smo kreirali hasher. Nakon toga, koristili smo ga za pisanje hasha u bajtni niz. Na kraju kodiramo String i vraćamo 32 bita hasha.
Kada pokrenemo ovaj primjer, dobit ćemo sljedeći izlaz:
Hashing i podudaranje lozinke
Sada ćemo napokon upotrijebiti bcrypt za proizvodnju hashed lozinki. Funkcije će biti izravne i jednostavne.
Također ćemo uključiti funkciju koja podudara raspršenu lozinku s danim nizom. Na ovaj način također možemo potvrditi je li lozinka koju je dao korisnik ispravna. Prije pokretanja ovog koda morat ćete instalirati paket golang za bcrypt sa sljedećom naredbom:
# go get "golang.org / x / crypto / bcrypt "Tada možete izvršiti ovaj kod:
paket glavniuvoz "fmt"
uvoz "golang.org / x / crypto / bcrypt "
func HashPassword (niz lozinke) (niz, pogreška)
bajtova, pogreška: = bcrypt.GenerateFromPassword ([] bajt (lozinka), 14)
povratni niz (bajtovi), pogreška
func CheckPasswordHash (lozinka, hash string) bool
pogreška: = bcrypt.CompareHashAndPassword ([] bajt (hash), [] bajt (lozinka))
return err == nil
func main ()
myPwd: = "shubham"
providedHash, _: = HashPassword (myPwd)
fmt.Println ("Lozinka:", myPwd)
fmt.Println ("Hash:", pod uvjetomHash)
isMatch: = CheckPasswordHash (myPwd, providedHash)
fmt.Println ("Podudarno ?: ", isMatch)
Kada pokrenemo ovaj primjer, dobit ćemo sljedeći izlaz:
Zaključak
U ovom postu proučavali smo jednostavne, ali korisne primjere kako možemo koristiti kripto paket za radnje vrlo važne i korisne u našim aplikacijama.