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

Go 在将图像写入磁盘之前进行加密,go,encryption,aes,Go,Encryption,Aes,给定以下代码: 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

给定以下代码:

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
接受一个标准的Go接口
io.Writer
,并写入其中。所以它不是直接写入文件

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


第二步:使用
aes
模块加密字节缓冲区。查看官方文档中的示例:或签出。

io.Writer可以处理多少数据?
io.Writer
是一个接口,它在运行时实际上不做任何事情。实现它的类型可以“处理数据”。一个
bytes.Buffer
实现
io.Writer
并且大小可变-它将随着新数据写入而增长,就像一个片段一样