Maison > développement back-end > Golang > Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de cryptage et de décryptage des données

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de cryptage et de décryptage des données

PHPz
Libérer: 2023-08-03 11:29:06
original
1134 Les gens l'ont consulté

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de cryptage et de décryptage des données

Dans la société de l'information d'aujourd'hui, la confidentialité des données est devenue particulièrement importante. Afin de garantir la confidentialité des données, nous utilisons généralement divers algorithmes de cryptage pour chiffrer les données. Dans cet article, nous utiliserons les fonctions du langage Go pour implémenter une fonction simple de cryptage et de décryptage des données.

Tout d'abord, nous devons importer le package crypto/chiffrement afin d'utiliser l'algorithme de cryptage. Nous utiliserons l'algorithme AES (Advanced Encryption Standard) pour crypter et décrypter les données. Le code est le suivant :

package main

import (
    "crypto/aes"
    "crypto/cipher"
    "crypto/rand"
    "encoding/base64"
    "fmt"
    "io"
)

// 加密函数
func encrypt(data []byte, key string) string {
    // 创建新的AES加密块
    block, _ := aes.NewCipher([]byte(key))

    // 创建一个长度为len(data) + aes.BlockSize的切片
    ciphertext := make([]byte, aes.BlockSize+len(data))
    // 初始化向量
    iv := ciphertext[:aes.BlockSize]
    if _, err := io.ReadFull(rand.Reader, iv); err != nil {
        panic(err)
    }

    // 加密数据
    stream := cipher.NewCFBEncrypter(block, iv)
    stream.XORKeyStream(ciphertext[aes.BlockSize:], data)

    // 返回加密后的数据,使用base64编码
    return base64.URLEncoding.EncodeToString(ciphertext)
}

// 解密函数
func decrypt(ciphertext string, key string) string {
    // 将密文解码为字节数组
    data, _ := base64.URLEncoding.DecodeString(ciphertext)

    // 分离向量和加密后的数据
    iv := data[:aes.BlockSize]
    data = data[aes.BlockSize:]

    // 创建新的AES解密块
    block, _ := aes.NewCipher([]byte(key))

    // 解密数据
    stream := cipher.NewCFBDecrypter(block, iv)
    stream.XORKeyStream(data, data)

    // 返回解密后的数据
    return string(data)
}

func main() {
    // 原始数据
    plaintext := "Hello, World!"

    // 密钥
    key := "password123"

    // 加密数据
    ciphertext := encrypt([]byte(plaintext), key)
    fmt.Printf("加密后的数据:%s
", ciphertext)

    // 解密数据
    decryptedText := decrypt(ciphertext, key)
    fmt.Printf("解密后的数据:%s
", decryptedText)
}
Copier après la connexion

Dans le code ci-dessus, nous définissons deux fonctions : chiffrer et déchiffrer. La fonction encrypt accepte un tableau d'octets en entrée et renvoie une représentation sous forme de chaîne des données cryptées. La fonction decrypt accepte une représentation sous forme de chaîne du texte chiffré et renvoie les données originales déchiffrées.

Dans la fonction principale, nous utilisons ces deux fonctions pour démontrer le processus de cryptage et de décryptage. Nous définissons une chaîne de texte en clair comme données d'origine et spécifions une clé. Ensuite, nous appelons la fonction encrypt pour crypter les données originales et imprimer le texte chiffré. Ensuite, nous appelons la fonction decrypt pour déchiffrer le texte chiffré et imprimer les données originales déchiffrées.

Exécutez le code ci-dessus, nous pouvons voir les données cryptées et les données décryptées. Cela prouve que nos fonctions de cryptage et de décryptage fonctionnent correctement.

Dans les applications pratiques, nous devons prêter attention à la sécurité de la clé et à la sécurité de la transmission du texte chiffré. Il n'est pas sûr de stocker les clés dans un code, il est préférable d'obtenir les clés dans un stockage sécurisé. Dans le même temps, des protocoles sécurisés tels que HTTPS doivent être utilisés lors de la transmission du texte chiffré pour garantir la confidentialité des données.

Résumé :
Dans cet article, nous utilisons les fonctions du langage Go pour implémenter une fonction simple de cryptage et de décryptage des données. En appelant la fonction de chiffrement encrypt et la fonction de décryptage decrypt, nous pouvons chiffrer les données et les déchiffrer en cas de besoin. Bien entendu, cet article n’est qu’un didacticiel de démarrage rapide. Dans les applications réelles, des algorithmes de chiffrement et des mécanismes de sécurité plus complexes sont nécessaires pour protéger la confidentialité des données.

Exemple de code : https://github.com/example/encryption-golang

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal