A partire da Go
Giusto per essere sicuri di essere sulla stessa pagina, ecco la struttura di directory che ho creato per il mio programma Hello World:
Ecco il programma che abbiamo creato:
pacchetto principaleimportare "fmt"
funzione principale()
fmt.Printf("Ciao, mondo.\n")
Possiamo eseguire il programma sopra con il seguente comando:
vai a correre ciao.partireUna volta eseguito questo comando, ecco l'output che vedrai:
Ora sembra a posto. Passiamo alla nostra agenda principale.
Pacchetto di criptovalute nel Golang
Usare Crypto in Golang non è molto facile da capire. Ciò è dovuto ai costrutti che fornisce e all'algoritmo che segue per ottenere la crittografia e la decrittografia.
In questa lezione studieremo questi punti:
- Crittografia SHA256
- Come usare bcrypt per crittografare stringhe come password nelle tue applicazioni web
- Utilizzo della crittografia e decrittografia AES
Iniziamo con l'hashing e il confronto delle password.
Crittografia SHA256
Inizieremo con un po' semplice. Proveremo un esempio molto semplice su come eseguire una crittografia SHA256 utilizzando Golang. Diamo un'occhiata all'esempio:
pacchetto principaleimportazione (
"fm"
"errori"
"cripto/sha256"
"codifica/base64"
)
funzione principale()
someText := "shubham"
hash, err := hashTextTo32Bytes(someText)
fmt.Printf("%s\n %s", hash, err)
func hashTextTo32Bytes(hashThis stringa) (stringa con hash, errore err)
if len(hashThis) == 0
restituisce "", errori.Nuovo("Nessun input fornito")
hasher := sha256.Nuovo()
hasher.Scrivi([]byte(hashThis))
stringToSHA256 := base64.Codifica URL.EncodeToString(hasher.Somma (zero))
// Riduce la lunghezza a 32 byte e ritorna.
stringa di ritornoToSHA256[:32], zero
Abbiamo iniziato creando inizialmente un hash. In seguito, lo abbiamo usato per scrivere l'hash in un array di byte. Infine, codifichiamo la stringa e restituiamo i 32 bit di hash.
Quando eseguiamo questo esempio, otterremo il seguente output:
Hashing e corrispondenza password
Ora utilizzeremo finalmente bcrypt per produrre password hash. Manterremo le funzioni dirette e semplici.
Includeremo anche una funzione che abbina la password con hash a una determinata stringa. In questo modo, possiamo anche confermare se la password fornita dall'utente è corretta. Prima di eseguire questo codice sarà necessario installare il pacchetto golang per bcrypt con il seguente comando:
# vai a prendere "golang.org/x/crypto/bcrypt"Quindi puoi eseguire questo codice:
pacchetto principaleimportare "fmt"
import "golang.org/x/crypto/bcrypt"
func HashPassword (stringa di password) (stringa, errore)
byte, err := bcrypt.GenerateFromPassword([]byte(password), 14)
stringa di ritorno (byte), err
func CheckPasswordHash(password, stringa hash) bool
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
return err == nil
funzione principale()
myPwd := "shubham"
fornitoHash, _ := HashPassword(myPwd)
fmt.Println("Password:", myPwd)
fmt.Println("Hash:", fornitoHash)
isMatch := CheckPasswordHash(myPwd, fornitoHash)
fmt.Println("Abbinato ?:", isMatch)
Quando eseguiamo questo esempio, otterremo il seguente output:
Conclusione
In questo post, abbiamo studiato esempi semplici ma utili su come possiamo usare il pacchetto crypto per fare azioni molto importanti e utili nelle nostre applicazioni.