大多數圖像,顧名思義,都是為了讓許多人經常觀看而製作的。例如,網頁圖像可能每天被大量訪客瀏覽數百次。然而,在某些情況下,您可能希望將特定圖像保密,以便只有您或您選定的一群朋友或網頁訪客才能查看它。ImageMagick 允許您將圖像加密,這樣除非有人知道您的密碼,否則他們將無法查看原始內容。
您可以使用加密工具來加密您的圖像,但它們通常會加密整個檔案,使其無法被識別為圖像格式。使用 ImageMagick,只會加密像素。加密後的圖像仍然可以被識別為圖像,甚至可以顯示在您的網頁中。但是,內容會顯示為亂碼,與原始內容完全不同。
加密圖像
使用 -encipher 選項來加密您的圖像,使其無法辨識。該選項需要一個包含您的密碼的檔名。在此範例中,我們加密一個圖像並將其保存為 PNG 格式
magick rose.jpg -encipher passphrase.txt rose.png
在此,我們使用另一個圖像作為密碼來加密圖像
magick rose.jpg -encipher smiley.gif rose.png
解密圖像
使用 -decipher 選項來解密您的圖像,使其再次可辨識。該選項需要一個包含您的密碼的檔名。在此範例中,我們解密一個圖像並將其保存為 JPEG 格式
magick rose.png -decipher passphrase.txt rose.jpg
加密和解密注意事項
某些格式不支援加密像素,例如 JPEG 或 GIF 格式。為確保您的圖像格式受到支援,請加密測試圖像並驗證您是否可以在加密該格式的任何其他圖像之前還原其原始內容。
圖像格式可能只支援 8 位元和 RGB(真彩色)。因此,您可能希望在輸出檔名前面加上選項“-depth 8 -type TrueColor”。
密碼可以是字母和符號的任意組合。它應該至少包含 12 個字元的組合,以確保您的圖像保持私密性。此外,請確保您的密碼檔案權限可以防止其他人讀取它,否則未經授權的使用者可能會查看原始圖像內容。
只有在您知道密碼的情況下,才能還原原始圖像內容。如果您遺失或忘記了密碼,您的原始圖像內容將永遠遺失。
ImageMagick 只會加密圖像像素。圖像中繼資料保持不變,任何有權限訪問圖像檔案的人都可以讀取。
ImageMagick 使用計數器模式下的 AES 密碼。我們使用您密碼的前半部分來導出 nonce。後半部分是密碼金鑰。正確使用時,AES-CTR 提供了高度的機密性。為避免資訊洩露,您必須為您加密的每個圖像使用新的密碼。
目前只有 ImageMagick 可以還原您加密的圖像內容。我們使用標準的密碼和模式,以便其他供應商可以支援加密圖像內容。
您可以在 IM 範例的 加密圖像資料 中找到一些圖像加密的小型實用範例。