Počnúc Go
Aby sme sa uistili, že sme na rovnakej stránke, tu je adresárová štruktúra, ktorú som vytvoril pre svoj program Hello World:
Tu je program, ktorý sme vytvorili:
balíček hlavnýimportovať „fmt“
func main ()
fmt.Printf („Ahoj, svet.\ n ")
Vyššie uvedený program môžeme spustiť nasledujúcim príkazom:
choď behať ahoj.choďPo spustení tohto príkazu uvidíte výstup, ktorý uvidíte:
Teraz to vyzerá dobre. Prejdime k našej hlavnej agende.
Krypto balíček v Golangu
Používanie kryptomeny v Golangu nie je veľmi ľahké pochopiť. Je to tak kvôli konštruktom, ktoré poskytuje, a algoritmu, ktorý používa na dosiahnutie šifrovania a dešifrovania.
V tejto lekcii sa budeme venovať týmto bodom:
- Šifrovanie SHA256
- Ako používať bcrypt na šifrovanie reťazcov ako hesiel vo vašich webových aplikáciách
- Používanie šifrovania a dešifrovania AES
Začnime hašovaním a porovnaním hesiel.
Šifrovanie SHA256
Začneme tým trochu jednoduchým. Pokúsime sa o veľmi jednoduchý príklad, ako vykonať šifrovanie SHA256 pomocou Golangu. Pozrime sa na príklad:
balíček hlavnýdovoz (
„fmt“
„chyby“
„crypto / sha256“
„encoding / base64“
)
func main ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", hash, chyba)
func hashTextTo32Bytes (hashThis string) (hašovaný reťazec, chyba chyby)
if len (hashThis) == 0
návrat "", chyby.Nové („Nie je zadaný žiadny vstup“)
hash: = sha256.Nový()
hasher.Zápis ([] bajt (hashThis))
stringToSHA256: = base64.URLEkódovanie.EncodeToString (hash.Súčet (nula))
// Skráťte dĺžku na 32 bajtov a vráťte sa.
return stringToSHA256 [: 32], nil
Začali sme tým, že sme pôvodne vytvorili hash. Potom sme ho použili na zápis hašovania do bajtového poľa. Nakoniec zakódujeme reťazec a vrátime 32 bitov hash.
Keď spustíme tento príklad, dostaneme nasledujúci výstup:
Hašovacie a zodpovedajúce heslo
Teraz konečne použijeme bcrypt na výrobu hesiel Hashed. Funkcie ponecháme priame a jednoduché.
Zahrnieme tiež funkciu, ktorá zodpovedá hašovanému heslu k danému reťazcu. Týmto spôsobom môžeme tiež potvrdiť, či je heslo poskytnuté používateľom správne. Pred spustením tohto kódu bude potrebné nainštalovať balík golang pre bcrypt pomocou nasledujúceho príkazu:
# go get “golang.org / x / crypto / bcrypt "Potom môžete vykonať tento kód:
balíček hlavnýimportovať „fmt“
importovať "golang.org / x / crypto / bcrypt "
func HashPassword (heslo, reťazec) (reťazec, chyba)
bajty, chyba: = bcrypt.GenerateFromPassword ([] bajt (heslo), 14)
návratový reťazec (bajty), chyba
func CheckPasswordHash (heslo, hash reťazec) bool
err: = bcrypt.CompareHashAndPassword ([] bajt (hash), [] bajt (heslo))
return err == nil
func main ()
myPwd: = "shubham"
providedHash, _: = HashPassword (myPwd)
fmt.Println ("Heslo:", myPwd)
fmt.Println ("Hash:", providedHash)
isMatch: = CheckPasswordHash (myPwd, providedHash)
fmt.Println ("Zhoda ?: ", isMatch)
Keď spustíme tento príklad, dostaneme nasledujúci výstup:
Záver
V tomto príspevku sme študovali jednoduché, ale užitočné príklady toho, ako môžeme pomocou krypto balíka robiť akcie, ktoré sú v našich aplikáciách veľmi dôležité a užitočné.