根據您想要的加密類型 - 您可以使用ImageIO將圖像寫入/讀取到輸出和輸入流,並將結果字節和解密/加密。
要保存圖像,請使用ImageIO將圖像寫入OutputStream(例如ByteArrayOutputStream)。從字節寫的,你可以加密,然後保存
要閱讀和解密,只需讀取文件的字節,解密字節,則字節流發送到ImageIO的
InputStream is = null;
ByteArrayOutputStream os = null;
ByteArrayInputStream input = null;
try{
is = new FileInputStream(inputFile);
os = new ByteArrayOutputStream();
byte[] buffer = new byte[500];
int len = -1;
while ((len = is.read(buffer)) != -1){
os.write(buffer, 0, len);
}
byte[] fileBytes = os.toByteArray();
decrypt(fileBytes);
input = new ByteArrayInputStream(fileBytes);
Image image = ImageIO.read(input);
}catch(IOException io){
io.printStackTrace();
}finally{
if (is != null){try{is.close();}catch(Exception e){}}
if (os != null){try{os.close();}catch(Exception e){}}
if (input != null){try{input.close();}catch(Exception e){}}
}
您使用的加密類型是您的選擇。您可以使用一個簡單的加密程序,採用按位異或字節數組加密(^)
for (int i = 0; i < bytes.length; i++){
bytes[i] = (byte)(bytes[i]^123);
}
或使用Cipher
注意,對於動畫gif文件,你可能需要尋找一個更看中的加密保存gif幀的方法(例如見this)
沒有默默無聞的安全性。如果你想保護你的圖像免受篡改使用散列。如果你想禁止第三方使用它,這是一個版權問題。如果您在某些時候顯示圖像,則可以製作截圖並以這種方式獲取圖像。此外,Java代碼可以很容易地反編譯,這樣任何擁有Java知識的人都可以解碼您的圖像。你正在爲完全無用的功能付出很多努力。 – konqi