Rumah > pembangunan bahagian belakang > Golang > Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data mudah

Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data mudah

PHPz
Lepaskan: 2023-08-03 11:29:06
asal
1156 orang telah melayarinya

Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data yang mudah

Dalam masyarakat maklumat hari ini, kerahsiaan data telah menjadi sangat penting. Untuk memastikan kerahsiaan data, kami biasanya menggunakan pelbagai algoritma penyulitan untuk menyulitkan data. Dalam artikel ini, kami akan menggunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data mudah.

Pertama, kita perlu mengimport pakej crypto/cipher untuk menggunakan algoritma penyulitan. Kami akan menggunakan algoritma AES (Advanced Encryption Standard) untuk menyulitkan dan menyahsulit data. Kodnya adalah seperti berikut:

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)
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan dua fungsi: menyulitkan dan menyahsulit. Fungsi penyulitan menerima tatasusunan bait sebagai input dan mengembalikan perwakilan rentetan data yang disulitkan. Fungsi nyahsulit menerima perwakilan rentetan bagi teks sifir dan mengembalikan data asal yang telah dinyahsulit.

Dalam fungsi utama, kami menggunakan dua fungsi ini untuk menunjukkan proses penyulitan dan penyahsulitan. Kami mentakrifkan teks biasa rentetan sebagai data asal dan menentukan kunci. Kemudian kami memanggil fungsi penyulitan untuk menyulitkan data asal dan mencetak teks sifir. Kemudian kami memanggil fungsi nyahsulit untuk menyahsulit teks sifir dan mencetak data asal yang dinyahsulit.

Jalankan kod di atas, kita boleh melihat data yang disulitkan dan data yang dinyahsulit. Ini membuktikan bahawa fungsi penyulitan dan penyahsulitan kami berfungsi dengan baik.

Dalam aplikasi praktikal, kita perlu memberi perhatian kepada keselamatan kunci dan keselamatan penghantaran teks sifir. Tidak selamat untuk menyimpan kunci dalam kod, lebih baik mendapatkan kunci daripada storan selamat. Pada masa yang sama, protokol selamat seperti HTTPS perlu digunakan semasa menghantar teks sifir untuk memastikan kerahsiaan data.

Ringkasan:
Dalam artikel ini, kami menggunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data mudah. Dengan memanggil fungsi penyulitan menyulitkan dan fungsi penyahsulitan, kami boleh menyulitkan data dan menyahsulitnya apabila diperlukan. Sudah tentu, artikel ini hanyalah tutorial permulaan pantas Dalam aplikasi sebenar, algoritma penyulitan dan mekanisme keselamatan yang lebih kompleks diperlukan untuk melindungi kerahsiaan data.

Contoh kod: https://github.com/example/encryption-golang

Atas ialah kandungan terperinci Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi penyulitan dan penyahsulitan data mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan