我正在尝试预览带有随机像素集的加密图像,例如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
macOS 14.4.1 (23E224) x86_64
OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan 2024)
此方法不适用于 JPEG。这并不是说使用 ECB 加密 JPEG 是安全的。只是 JPEG 无法以肉眼如此明显地展示该问题。压缩格式的结构更加复杂,加密后的结果不会直接映射到原始结构。
您需要使用未压缩的格式。通常,此示例是使用 BMP 完成的。未压缩格式的明文和加密形式通常具有等效的结构。