golang

Kripto paket Golang

Kripto paket Golang
V tej lekciji o paketu Crypto v Golangu bomo preučili različne primere upravljanja in ustvarjanja šifer v Go in videli, kako nam paket Crypto pomaga pri upravljanju s šifro v programskem jeziku Go. Zdaj bomo začeli.

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 paket
uvoz "fmt"
func main ()
fmt.Printf ("Pozdravljen, svet.\ n ")

Zgornji program lahko zaženemo z naslednjim ukazom:

pojdi teči zdravo.pojdi

Ko 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:

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 paket
uvoz (
"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 paket
uvoz "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.

Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...