Commencer par Go
Juste pour être sûr que nous sommes sur la même longueur d'onde, voici la structure de répertoires que j'ai faite pour mon programme Hello World :
Voici le programme que nous avons créé :
paquet principalimporter "fmt"
fonction principale()
fmt.Printf("Bonjour, monde.\n")
Nous pouvons exécuter le programme ci-dessus avec la commande suivante :
va courir bonjour.vaUne fois que nous avons exécuté cette commande, voici le résultat que vous verrez :
Maintenant ça a l'air bien. Passons à notre ordre du jour principal.
Paquet de chiffrement dans le Golang
L'utilisation de Crypto dans le Golang n'est pas très facile à comprendre. C'est à cause des constructions qu'il fournit et de l'algorithme qu'il suit pour réaliser le cryptage et le décryptage.
Dans cette leçon, nous étudierons ces points :
- Cryptage SHA256
- Comment utiliser bcrypt pour crypter des chaînes comme des mots de passe dans vos applications Web
- Utilisation du cryptage et du décryptage AES
Commençons par hacher et comparer les mots de passe.
Cryptage SHA256
Nous allons commencer par un peu simple. Nous allons essayer un exemple très simple sur la façon d'effectuer un cryptage SHA256 en utilisant Golang. Regardons l'exemple :
paquet principalimporter (
"fmt"
"les erreurs"
"crypto/sha256"
"encodage/base64"
)
fonction principale()
someText := "shubham"
hachage, err := hashTextTo32Bytes(someText)
fmt.Printf("%s\n %s", hachage, err)
func hashTextTo32Bytes(hashThis string) (chaîne hachée, erreur d'erreur)
if len(hashThis) == 0
retour "", erreurs.Nouveau("Aucune entrée fournie")
hachage := sha256.Nouveau()
hacheur.Écrire([]octet(hashThis))
chaîneVersSHA256 := base64.URLEncodage.EncodeToString(hasher.Somme (néant))
// Réduisez la longueur à 32 octets et retournez.
chaîne de retourVersSHA256[:32], nil
Nous avons commencé par créer un hasher initialement. Suite à cela, nous l'avons utilisé pour écrire le hachage dans un tableau d'octets. Enfin, nous encodons la chaîne et retournons les 32 bits de hachage.
Lorsque nous exécutons cet exemple, nous obtenons la sortie suivante :
Hachage et correspondance du mot de passe
Maintenant, nous allons enfin utiliser bcrypt pour produire des mots de passe hachés. Nous garderons les fonctions directes et simples.
Nous inclurons également une fonction qui fait correspondre le mot de passe haché à une chaîne donnée. De cette façon, nous pouvons également confirmer si le mot de passe fourni par l'utilisateur est correct. Avant d'exécuter ce code, vous devrez installer le package golang pour bcrypt avec la commande suivante :
# va chercher "golang.org/x/crypto/bcrypt"Ensuite, vous pouvez exécuter ce code :
paquet principalimporter "fmt"
importer "golang.org/x/crypto/bcrypt"
func HashPassword (chaîne de mot de passe) (chaîne, erreur)
octets, err := bcrypt.GenerateFromPassword([]byte(password), 14)
chaîne de retour (octets), err
func CheckPasswordHash (mot de passe, chaîne de hachage) bool
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
return err == nil
fonction principale()
myPwd := "shubham"
fourniHash, _ := HashPassword(myPwd)
fmt.Println("Mot de passe :", monPwd)
fmt.Println("Hash :", fourniHash)
isMatch := CheckPasswordHash(myPwd, fourniHash)
fmt.Println("Correspondance ?:", isMatch)
Lorsque nous exécutons cet exemple, nous obtenons la sortie suivante :
Conclusion
Dans cet article, nous avons étudié des exemples simples mais utiles sur la façon dont nous pouvons utiliser un package crypto pour effectuer des actions très importantes et utiles dans nos applications.