混淆图像

时间:2009-04-10 19:19:53

标签: delphi image jpeg

我想分发一些图片,除非他们使用我的程序,否则不允许其他人看到它们。我的目的是使用JPG文件,我将在其中更改标题,以便其他图像查看器无法再读取它们。例如,我可以删除作为JPG魔术签名的字节7-10。稍后,我的程序将重建标题并显示JPG文件。

问题:我如何动态执行此操作,无需读取“损坏的”JPG文件,恢复标头,将好文件保存到磁盘,然后将其重新加载为“好”的JPG文件?

6 个答案:

答案 0 :(得分:16)

将“已损坏”文件加载到 TMemoryStream 中,修补内存中的字节,然后使用 TGraphic.LoadFromStream()加载固定的JPG文件。

答案 1 :(得分:6)

加密它们。加载加密的图像,在内存中解密,然后像mghie建议的那样执行loadfromstream。

答案 2 :(得分:4)

为什么不使用私钥加密图像并将公钥分发给要查看图像的人?分发公钥比编写一些自定义软件和分发公钥更容易。别忘了;屏幕上显示的任何内容都可以通过屏幕截自定义损坏的JPEG只能与您的应用程序一起显示这一事实无法保护。也别忘了;人们可以简单地用破损的图像分发你的软件。

答案 3 :(得分:2)

Mghie的答案与你会发现的一样好,但它不太可能太有效。如果有人想查看你的图像并且他们对图像格式有所了解,他们会在十六进制编辑器中打开它,并且很可能会识别出他们看到的带有魔术标题的JPEG视图。

如果您真的想让某人不要查看您的图片,请构建您自己的图片格式(它并不像听起来那么难,真的如此),并尽可能少地放入元数据,然后希望它有效。或加密它们,或将它们放入存档中(构建自己的存档格式以获得最佳效果),并希望 能够正常工作。

事实上,最终,任何编码的东西都必须在它被显示之前被解码,任何有才华的黑客都可以通过你的解码程序追踪它们并找出它是如何工作的。你为什么试图隐藏用户的东西?

答案 4 :(得分:1)

通过将图像打包为加密资源,可能会使它们变得更加困难。但与其他任何东西一样,如果他们可以访问可以获取图像的文件。这取决于愿意花多少精力。

答案 5 :(得分:0)

根据您需要的安全程度,您可以执行一些简单的操作,例如将文件扩展名模糊到仅使用您的应用程序打开的扩展名。只有当它不是你正在改变的超级秘密图像时,这才有效。