在将图像写入磁盘之前加密
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.
给定以下代码:
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.