2009-04-10 86 views
6

我想發佈一些圖片,而不是讓別人看到他們,除非他們使用的是我的計劃。我的意圖是使用JPG文件,在其中我將更改標題,以便其他圖像查看器無法再讀取它們。例如,我可以刪除字節7-10,這是JPG的魔術簽名。稍後,我的程序將重新構建標題並顯示JPG文件。混淆圖像

問:我怎麼做到這一點對飛,不讀「破」 JPG文件,恢復頭,良好的文件保存到磁盤,然後重新加載它作爲一個「好」的JPG文件?

+0

只要記住,如果有人可以查看你的節目中的圖像,他們可以提取它。他們需要做的只是打印屏幕。 – Herms 2009-04-10 19:46:27

+0

我知道。這對我來說很好。感謝Herms。 – Ampere 2009-04-10 20:28:11

回答

16

負載「破」文件到一個內存流,修補存儲器內的字節數,並使用TGraphic.LoadFromStream()加載固定JPG文件。

+0

死了,你快。 :-) – 2009-04-10 19:27:00

+1

>該死,你快。 :-) - 肯懷特 同意。 謝謝! 我開心:) – Ampere 2009-04-10 20:10:59

2

Mghie的答案是約一樣好,你會發現,但它不太可能是太有效了。如果有人想看看你的圖片,並且他們知道任何有關圖像格式的信息,他們會用十六進制編輯器打開它,並且很可能會識別他們看到的帶有魔術標題的JPEG圖像。

如果你真的想讓別人看不到你的圖像,那就構建你自己的圖像格式(它並不像聽起來那麼難),並儘可能少地添加元數據,然後希望這種方式有效。或加密它們,或者把它們放到一個存檔,(建造你自己的存檔格式爲達到最佳效果,),並希望作品。

的是,最終,這是什麼編碼已被解碼後方可展示它,任何足夠天賦的黑客可以通過你的日常解碼跟蹤他們的方式,弄清它是如何工作的。你爲什麼試圖隱藏用戶的東西呢?

1

你可以讓他們更難以通過字節打包的圖像作爲加密資源。但像其他任何東西一樣,如果他們有權訪問可以獲取圖像的文件。這取決於願意使用多少努力。

6

進行加密。加載加密的圖像,在內存中解密,然後像mghie建議的那樣執行loadflowstream。

4

爲什麼不直接用私鑰加密的圖像和您的公鑰分發到您要查看的影像的人呢?分發公共密鑰要比編寫一些定製軟件和分發公共密鑰容易得多。別忘了;屏幕上顯示的任何內容都可以屏幕捕捉。自定義損壞的JPEG只能與您的應用程序一起顯示的事實無法保護。也別忘了;人們可以簡單地分發你的軟件與損壞的圖像。

0

取決於你如何安全需要的是你可以做簡單的東西作爲混淆文件擴展,只與您的應用程序打開的擴展。這隻有在它不是超級祕密圖像時纔會起作用。