package main

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

func main() {
    key := make([]byte, 32)
    if _, err := rand.Read(key); err != nil {
        fmt.Println("Error generating random key:", err)
        return
    }
    fmt.Println("Random key:", base64.URLEncoding.EncodeToString(key))

    plaintext, err := os.ReadFile("payload.bin")
    if err != nil {
        fmt.Println("Error reading file:", err)
        return
    }

    block, err := aes.NewCipher(key)
    if err != nil {
        fmt.Println("Error creating AES cipher:", err)
        return
    }

    iv := make([]byte, aes.BlockSize)
    if _, err := io.ReadFull(rand.Reader, iv); err != nil {
        fmt.Println("Error generating initialization vector:", err)
        return
    }

    stream := cipher.NewCTR(block, iv)

    ciphertext := make([]byte, len(plaintext))
    stream.XORKeyStream(ciphertext, plaintext)

    fmt.Println("Encrypted content:", base64.URLEncoding.EncodeToString(ciphertext))
}

注意: 在运行代码之前,需要先创建名为payload.bin的本地文件,并向其中写入需要加密的内容。

Go语言实现AES-CTR加密本地文件:生成随机密钥并Base64编码

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

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