Začenši z Go
Da se prepričamo, da smo na isti strani, je tukaj struktura imenikov, ki sem jo naredil za svoj program Hello World:
Tukaj je program, ki smo ga ustvarili:
glavni paketuvoz "fmt"
func main ()
fmt.Printf ("Pozdravljen, svet.\ n ")
Zgornji program lahko zaženemo z naslednjim ukazom:
pojdi teči zdravo.pojdiKo zaženemo ta ukaz, bomo videli izhod:
Zdaj je to videti dobro. Pojdimo na naš glavni program.
Kripto paket v Golangu
Uporaba Crypto v Golangu ni zelo enostavna za razumevanje. To je posledica konstrukcij, ki jih ponuja, in algoritma, ki mu sledi za doseganje šifriranja in dešifriranja.
V tej lekciji bomo preučili te točke:
- Šifriranje SHA256
- Kako uporabljati bcrypt za šifriranje nizov, kot so gesla, v vaših spletnih aplikacijah
- Uporaba šifriranja in dešifriranja AES
Začnimo s Hashingom in primerjavo gesel.
Šifriranje SHA256
Začeli bomo z nekoliko preprostimi. Poskusili bomo zelo preprost primer, kako izvesti šifriranje SHA256 z uporabo Golanga. Poglejmo primer:
glavni paketuvoz (
"fmt"
"napake"
"kripto / sha256"
"kodiranje / base64"
)
func main ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", zgoščevanje, napaka)
func hashTextTo32Bytes (hashThis string) (zgoščeni niz, napaka napake)
če je len (hashThis) == 0
vrnitev "", napake.Novo ("Vhod ni priložen")
razpršilec: = sha256.Novo ()
hasher.Zapiši ([] bajt (hashThis))
stringToSHA256: = base64.URLEkodiranje.EncodeToString (hasher.Vsota (nič))
// Zmanjšajte dolžino na 32 bajtov in vrnite.
vrni nizToSHA256 [: 32], nič
Najprej smo začeli z ustvarjanjem hasherja. Po tem smo ga uporabili za zapisovanje razpršitve v bajtno matriko. Na koncu kodiramo niz in vrnemo 32 bitov razprševanja.
Ko zaženemo ta primer, bomo dobili naslednji izhod:
Hashing in ujemanje gesla
Zdaj bomo končno uporabili bcrypt za izdelavo zgoščenih gesel. Funkcije bomo ohranjali neposredne in enostavne.
Vključili bomo tudi funkcijo, ki ujema z zgoščenim geslom za dani niz. Tako lahko tudi potrdimo, ali je geslo uporabnika pravilno. Pred zagonom te kode boste morali namestiti paket golang za bcrypt z naslednjim ukazom:
# pojdi po "golang.org / x / crypto / bcrypt "Nato lahko izvedete to kodo:
glavni paketuvoz "fmt"
uvoz "golang.org / x / crypto / bcrypt "
func HashPassword (niz gesla) (niz, napaka)
bajtov, napaka: = bcrypt.GenerateFromPassword ([] bajt (geslo), 14)
vrnitev niza (bajti), napaka
func CheckPasswordHash (geslo, hash string) bool
napaka: = bcrypt.CompareHashAndPassword ([] bajt (zgoščena vrednost), [] bajt (geslo))
vrni napako == nič
func main ()
myPwd: = "shubham"
providedHash, _: = HashPassword (myPwd)
fmt.Println ("Geslo:", myPwd)
fmt.Println ("Hash:", pod pogojem Hash)
isMatch: = CheckPasswordHash (myPwd, providedHash)
fmt.Println ("Ujema se ?: ", isMatch)
Ko zaženemo ta primer, bomo dobili naslednji izhod:
Zaključek
V tej objavi smo preučili preproste, a uporabne primere, kako lahko s paketom kripto izvajamo zelo pomembna in koristna dejanja v naših aplikacijah.