Počínaje Go
Abychom se ujistili, že jsme na stejné stránce, zde je adresářová struktura, kterou jsem vytvořil pro svůj program Hello World:
Zde je program, který jsme vytvořili:
balíček hlavníimportovat „fmt“
func main ()
fmt.Printf („Ahoj, svět.\ n ")
Výše uvedený program můžeme spustit pomocí následujícího příkazu:
běž běž ahoj.jítJakmile spustíme tento příkaz, uvidíte výstup, který uvidíte:
Teď to vypadá dobře. Pojďme k naší hlavní agendě.
Krypto balíček v Golangu
Používání kryptoměny v Golangu není snadné pochopit. Důvodem jsou konstrukce, které poskytuje, a algoritmus, který používá k dosažení šifrování a dešifrování.
V této lekci si prostudujeme tyto body:
- Šifrování SHA256
- Jak používat bcrypt k šifrování řetězců, jako jsou hesla, ve vašich webových aplikacích
- Používání šifrování a dešifrování AES
Začněme hašováním a porovnáním hesel.
Šifrování SHA256
Začneme poněkud jednoduchým. Pokusíme se o velmi jednoduchý příklad, jak provést šifrování SHA256 pomocí Golangu. Podívejme se na příklad:
balíček hlavníimport (
"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) (hashed string, err error)
if len (hashThis) == 0
návrat "", chyby.Nové („Není zadán žádný vstup“)
hasher: = sha256.Nový()
hasher.Zápis ([] bajt (hashThis))
stringToSHA256: = base64.URLEncoding.EncodeToString (hash.Součet (nula))
// Zkraťte délku na 32 bytů a vraťte se.
return stringToSHA256 [: 32], nil
Začali jsme vytvořením hash zpočátku. V návaznosti na to jsme jej použili k zápisu hodnoty hash do bajtového pole. Nakonec kódujeme řetězec a vrátíme 32 bitů hash.
Když spustíme tento příklad, získáme následující výstup: When we run this example, we will get the following output:
Hašovací a odpovídající heslo
Nyní konečně použijeme bcrypt k výrobě hashovaných hesel. Budeme udržovat funkce přímé a jednoduché.
Zahrneme také funkci, která odpovídá hašovanému heslu k danému řetězci. Tímto způsobem můžeme také potvrdit, zda je heslo poskytnuté uživatelem správné. Před spuštěním tohoto kódu bude nutné nainstalovat balíček golang pro bcrypt pomocí následujícího příkazu:
# go get "golang.org / x / crypto / bcrypt "Pak můžete spustit tento kód:
balíček hlavníimportovat „fmt“
import "golang.org / x / crypto / bcrypt "
func HashPassword (řetězec hesla) (řetězec, chyba)
bajty, chyba: = bcrypt.GenerateFromPassword ([] byte (heslo), 14)
návratový řetězec (bajty), chyba
func CheckPasswordHash (heslo, hash řetězec) bool
err: = bcrypt.CompareHashAndPassword ([] byte (hash), [] byte (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 ("Shoda ?: ", isMatch)
Když spustíme tento příklad, získáme následující výstup:
Závěr
V tomto příspěvku jsme studovali jednoduché, ale užitečné příklady toho, jak můžeme pomocí krypto balíku provádět akce velmi důležité a užitečné v našich aplikacích.