首页 > 解决方案 > 在将图像写入磁盘之前加密

问题描述

给定以下代码:

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() 没有返回编码文件,而是直接写入文件。如果它正在返回一个文件,那么该方法对我来说很清楚。但是所以......我被困住了。

标签: goencryptionaes

解决方案


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

第一步:将 a 传递bytes.Bufferpng.Encode,然后您将在缓冲区中将 PNG 图像编码为字节切片。

第二步:使用aes模块加密字节缓冲区。请参阅官方文档中的示例:https ://pkg.go.dev/crypto/cipher#example-NewCB​​CEncrypter或查看这篇文章


推荐阅读