我正在研究PHP中的图像加密。如何在仍然能够查看图像的同时加密图像(我期待完全不同的颜色或失真,具体取决于所使用的加密方法)。
我的方法现在是加密图像文件的整个二进制数据,但我认为我的问题是图像文件的标题丢失了。
如何在不丢失标题和其他内容的情况下更改图像的正文(数据)?
非常感谢!
答案 0 :(得分:0)
在仍然能够查看图像的同时如何加密图像(我期望完全不同的颜色或失真,具体取决于所使用的加密方法)。
听起来您想经历菲利波·瓦尔索达(Filippo Valsorda)曾经制作的ECB Penguin pop art仪式:
我愿意接受
首先需要的是一种图像格式,其中像素按纯字节顺序表示,没有任何压缩,并且可能带有简单的标头。最终的理想选择是PPM binary format,它是Netpbm规范的一部分。 (基本上,它只是一个ASCII标头,然后是一个3字节的RGB像素表示序列。)
这里是过程:
# First convert the Tux to PPM with Gimp # Then take the header apart head -n 4 Tux.ppm > header.txt tail -n +5 Tux.ppm > body.bin # Then encrypt with ECB (experiment with some different keys) openssl enc -aes-128-ecb -nosalt -pass pass:"ANNA" -in body.bin -out body.ecb.bin # And finally put the result together and convert to some better format with Gimp cat header.txt body.ecb.bin > Tux.ecb.ppm
结果!点击获取原图。就像“加密安全程序”一样,它可以带来很好的书呆子办公室装饰!
当然,如果您希望能够在不加密的情况下显示未更改的图像,那根本不可能。