在将图像写入磁盘之前加密

Encrypt before writing image to disk

给定以下代码:

import (
    "image"
    "image/color"
    "image/png"
    "os"
)

var img = image.NewRGBA(image.Rect(0, 0, 100, 100))
var col color.Color

func main() {
    col = color.RGBA{255, 0, 0, 255} // Red
    HLine(10, 20, 80)
    col = color.RGBA{0, 255, 0, 255} // Green
    Rect(10, 10, 80, 50)

    f, err := os.Create("draw.png")
    if err != nil {
        panic(err)
    }
    defer f.Close()
    png.Encode(f, img)
}

如何在将图像写入磁盘之前使用AES加密图像?不幸的是,png.Encode() 没有返回编码文件,而是直接写入文件。如果它返回一个文件,我会很清楚这种方法。但是……我卡住了。

png.Encode 获取一个 io.Writer,一个标准的 Go 接口,并写入其中。所以不是直接写入文件。

第一步:将bytes.Buffer传递给png.Encode,然后您会将PNG图像编码为缓冲区中的字节切片。

第二步:使用aes模块加密字节缓冲区。参见官方文档中的示例:https://pkg.go.dev/crypto/cipher#example-NewCBCEncrypter or check out this post.