以下是使用 Golang 进行 AES256 加密的示例:

package main

import (
    'crypto/aes'
    'crypto/cipher'
    'encoding/base64'
    'fmt'
    'crypto/rand'
)

func main() {
    // 要加密的原始数据
    plaintext := []byte('hello world')

    // 32位密钥,AES256加密需要32位(256位)密钥
    key := []byte('12345678901234567890123456789012')

    // 创建AES加密器
    block, err := aes.NewCipher(key)
    if err != nil {
        panic(err)
    }

    // 生成随机的IV向量
    iv := make([]byte, aes.BlockSize)
    if _, err := rand.Read(iv); err != nil {
        panic(err)
    }

    // 使用CBC分组模式进行加密
    cipherText := make([]byte, len(plaintext))
    mode := cipher.NewCBCEncrypter(block, iv)
    mode.CryptBlocks(cipherText, plaintext)

    // 将IV向量和密文合并,方便后续解密
    result := append(iv, cipherText...)

    // 将密文转换为base64编码的字符串,方便传输和存储
    base64Text := base64.StdEncoding.EncodeToString(result)

    fmt.Println(base64Text)
}

在上面的示例中,我们使用 AES256 加密算法和 CBC 分组模式对字符串 'hello world' 进行加密。我们使用一个 32 位(256 位)的密钥,并生成一个随机的 IV 向量。最终,我们将 IV 向量和密文合并,并将密文转换为 base64 编码的字符串以便传输和存储。

请注意,我们使用了 Go 标准库中的 crypto/aes 和 crypto/cipher 包来完成 AES256 加密。我们还使用了 encoding/base64 包将密文转换为 base64 编码的字符串。

相关内容:

请注意,示例代码中的密钥和 IV 向量仅用于演示目的。在实际应用中,请使用强随机密钥和 IV 向量,并且妥善保管密钥。

Golang AES256 加密示例:详细代码解析和实现

原文地址: https://www.cveoy.top/t/topic/nQJH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录