procédure stockée chiffrée Golang
Avec le développement rapide d'Internet, les problèmes de sécurité de l'information attirent de plus en plus d'attention. Parmi eux, la sécurité des données dans la base de données est extrêmement importante. Par conséquent, dans les applications pratiques, il est indispensable de chiffrer les données de la base de données. Cet article présente un processus de stockage crypté basé sur Golang pour garantir la sécurité des données.
1. Algorithme de cryptage Golang
Golang fournit une variété d'algorithmes de cryptage. Les algorithmes de chiffrement courants incluent principalement md5, sha, AES, etc., qui doivent être sélectionnés en fonction des besoins des applications réelles. Voici les algorithmes de chiffrement Golang courants.
- algorithme md5
md5 est l'un des algorithmes de résumé les plus courants. Parce que son code est irréversible, il est souvent utilisé pour le stockage des mots de passe. Cet algorithme peut digérer des messages de n'importe quelle longueur en données de 128 bits, généralement représentées sous forme de chaîne hexadécimale.
Le package md5 est fourni en golang, qui peut être utilisé via le code suivant :
import ( "crypto/md5" "fmt" ) func main() { str:="hello,world" h:=md5.Sum([]byte(str)) fmt.Printf("%x",h) }
- algorithme sha
sha est un type d'algorithme de hachage sécurisé, couramment utilisé dans les normes de signature numérique. Semblable à md5, il existe de nombreuses variantes de sha, dont sha256 est la plus courante. Il peut digérer des messages de n'importe quelle longueur en informations de 256 bits, tout en atteignant l'objectif de résister aux attaques par collision par force brute.
Le package sha256 est fourni en golang, qui peut être utilisé via le code suivant :
import ( "crypto/sha256" "fmt" ) func main() { str:="hello,world" h:=sha256.Sum256([]byte(str)) fmt.Printf("%x",h) }
- Algorithme AES
AES est l'algorithme Advanced Encryption Standard et un algorithme de cryptage symétrique. Il convertit le texte brut d'une longueur spécifiée en texte chiffré d'une longueur spécifiée via un algorithme Grâce au même algorithme, le texte chiffré peut être restauré en texte brut. Dans les applications, le stockage de données sensibles avec le cryptage AES peut grandement améliorer la sécurité des données.
Le package crypto/aes est fourni en golang, qui peut être utilisé via le code suivant :
import ( "crypto/aes" "crypto/cipher" "fmt" ) func main() { key:=[]byte("mykey1234567890") plaintext:=[]byte("hello,world") block,_:=aes.NewCipher(key) ciphertext:=make([]byte,len(plaintext)) iv:=[]byte("1234567890123456") stream:=cipher.NewCTR(block,iv) stream.XORKeyStream(ciphertext,plaintext) fmt.Printf("%x ",ciphertext) }
2. Processus de stockage crypté Golang
Dans les applications réelles, les données de la base de données ne doivent pas être directement enregistrées en texte brut. Afin d'éviter la fuite d'informations sensibles, stockez-les généralement cryptées. Ce qui suit est une procédure stockée cryptée basée sur Golang :
- Importez les packages crypto/aes, crypto/cipher, crypto/md5.
import ( "crypto/aes" "crypto/cipher" "crypto/md5" "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" )
- Définissez d'abord une fonction permettant de générer un code md5 32 bits pour générer une clé.
func getMd5(value string) string { m := md5.New() m.Write([]byte(value)) return hex.EncodeToString(m.Sum(nil)) }
- Définissez une fonction pour le cryptage AES.
func encrypt(str, key string) string { k := []byte(key) plaintext := []byte(str) block, _ := aes.NewCipher(k) ciphertext := make([]byte,len(plaintext)) iv := []byte("1234567890123456") stream := cipher.NewCTR(block, iv) stream.XORKeyStream(ciphertext, plaintext) return string(ciphertext) }
- Définissez une fonction pour le décryptage AES.
func decrypt(str, key string) string { k := []byte(key) ciphertext := []byte(str) block, _ := aes.NewCipher(k) plaintext := make([]byte,len(ciphertext)) iv := []byte("1234567890123456") stream := cipher.NewCTR(block, iv) stream.XORKeyStream(plaintext, ciphertext) return string(plaintext) }
- Appelez la fonction de cryptage et stockez les données cryptées dans la base de données.
func saveData(name, password, key string) error { // 打开数据库 db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { return err } defer db.Close() // 定义插入SQL语句 sql := "INSERT INTO user(name, password) VALUES(?, ?)" // 对密码进行加密存储 pwd := encrypt(password, key) // 执行SQL语句 stmt, err := db.Prepare(sql) if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(name, pwd) return err }
- Appelez la fonction de décryptage et lisez les données décryptées.
func getData(name,key string) (string,error) { // 打开数据库 db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { return "",err } defer db.Close() // 定义查询SQL语句 sql := "SELECT password FROM user WHERE name = ?" // 执行SQL语句 stmt, err := db.Prepare(sql) if err != nil { return "",err } defer stmt.Close() // 读取数据并进行解密 var pwd string err = stmt.QueryRow(name).Scan(&pwd) if err != nil { return "",err } pwd = decrypt(pwd,key) return pwd,nil }
En résumé, grâce à l'algorithme de cryptage Golang ci-dessus et au processus de stockage crypté, les données sensibles de la base de données peuvent être cryptées et stockées pour garantir la sécurité des données, tout en empêchant efficacement les fuites de données et en améliorant la fiabilité et la sécurité des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

L'article explique comment utiliser l'outil PPROF pour analyser les performances GO, notamment l'activation du profilage, la collecte de données et l'identification des goulots d'étranglement communs comme le processeur et les problèmes de mémoire. COMMANDE: 159

L'article traite des tests d'unité d'écriture dans GO, couvrant les meilleures pratiques, des techniques de moquerie et des outils pour une gestion efficace des tests.

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

L'article discute de l'utilisation de tests basés sur la table dans GO, une méthode qui utilise un tableau des cas de test pour tester les fonctions avec plusieurs entrées et résultats. Il met en évidence des avantages comme une amélioration de la lisibilité, une duplication réduite, l'évolutivité, la cohérence et un

L'article discute de la gestion des dépendances des modules GO via Go.mod, couvrant les spécifications, les mises à jour et la résolution des conflits. Il met l'accent sur les meilleures pratiques telles que le versioning sémantique et les mises à jour régulières.

L'article traite du package de réflexion de Go, utilisé pour la manipulation d'exécution du code, bénéfique pour la sérialisation, la programmation générique, etc. Il met en garde contre les coûts de performance comme une exécution plus lente et une utilisation de la mémoire plus élevée, conseillant une utilisation judicieuse et la meilleure
