在 macOS 终端上使用 `openssl` 加密图像,然后预览随机像素集

问题描述 投票:0回答:1

我正在尝试预览带有随机像素集的加密图像,例如this也解释了here

重现步骤

  • 下载测试图像

    wget -O i.jpg https://i.ibb.co/M8nJ9cF/i.jpg
    
  • 在 CBC 模式下使用 256 位 AES 对 jpg 文件进行编码

    openssl enc -aes-256-cbc -e -in i.jpg -out o.jpg -pass pass:123
    
  • 将标头从原始复制到加密(JPEG 没有 54 字节标头,也许这就是问题所在,但尝试使用 2 字节但没有成功)

    dd if=i.jpg of=o.jpg bs=54 count=1 conv=notrunc
    

之后我打开加密文件,但出现此错误

The file "o.jpg" could not be opened.
It may be damaged or use a file format that Preview doesn't recognise.

顺便说一下我可以成功解密

openssl enc -d -aes-256-cbc -in o.jpg -out i.jpg -pass pass:123

环境

  • sw_vers
    macOS 14.4.1 (23E224) x86_64
  • openssl -v
    OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan 2024)
image encryption openssl
1个回答
0
投票

此方法不适用于 JPEG。这并不是说使用 ECB 加密 JPEG 是安全的。只是 JPEG 无法以肉眼如此明显地展示该问题。压缩格式的结构更加复杂,加密后的结果不会直接映射到原始结构。

您需要使用未压缩的格式。通常,此示例是使用 BMP 完成的。未压缩格式的明文和加密形式通常具有等效的结构。

© www.soinside.com 2019 - 2024. All rights reserved.