【发布时间】:2019-05-04 15:15:44
【问题描述】:
对于一个项目,我需要加密 JPEG 图像的数据字节以显示加密和解密的图像。我过去常常通过跳过 1078 个字节然后加密其余部分来轻松地使用 BMP 格式完成此操作。但是对于 JPEG,它要困难得多。我发现 JPEG 有 20 byte markers,但是当我跳过 20 个字节而不是 1078 字节时,我无法像使用 BMP 一样看到加密图像。
那么您能告诉我如何访问 JPEG 格式的数据字节以对其进行加密吗?
注意:代码要大很多,所以我不能发布整个代码。有关如何访问 JPEG 格式的数据字节的信息就足够了。
【问题讨论】:
-
为什么不加密整个文件,包括标题?
-
@grooveplex 我需要标题完好无损才能进行一些转换。之后,我使用套接字发送图像。由于实际程序比上面的代码大得多,解释起来有点复杂。基本上我需要图像看起来像加密的 JPEG 图像。另外,当我收到另一边的图像时,我仍然必须知道标题才能显示加密的图像。这对我的项目来说是必须的。顺便说一句,对不起我的英语。
-
如果您可以edit 您的问题包括一个完整的可运行程序,而不仅仅是一个 sn-p,这将有所帮助。
-
jpeg 是一种压缩格式。没有header辅助解压,图像数据就没有意义了。如果压缩数据是加密的,那么幸运的是能够将其解压缩成图像——甚至是垃圾图像。如果要显示图像,最好将其解压缩为位图,然后为位图执行任何操作。
-
@Timo 压缩在随机数据上效果不佳,密文看起来像没有密钥的随机数据。此外,JPEG 是有损压缩,因此您无法完全减少密文。也许您可以将密文存储在标头中,并将 JPEG 压缩为一位或类似的东西。
标签: c++ image-processing encryption cryptography jpeg