Стеганография при сжатии с потерями (JAVA)
У меня есть это для кодирования данных в изображениях JPEG в Java. Я преобразовываю текст в его двоичную форму и вставляю его в LSB (в зависимости от того, что выбрал пользователь. 1,2,3,4) RGB в каждом пикселе от (0,0) до (ширина, высота) ,
outer:
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
Color c = new Color(image.getRGB(j, i));
int red = binaryToInteger(insertMessage(integerToBinary((int)(c.getRed())),numLSB));
int green = binaryToInteger(insertMessage(integerToBinary((int)(c.getGreen())),numLSB));
int blue = binaryToInteger(insertMessage(integerToBinary((int)(c.getBlue())),numLSB));
Color newColor = new Color(red,green,blue);
image.setRGB(j,i,newColor.getRGB());
}
}
gui.appendStatus("Binarized message is: " + binarizedMessage);
File output = new File(gui.getOutput()+".jpg");
ImageIO.write(image, "png", output);
В настоящее время я пишу его в формате png, и он работает хорошо, но я надеюсь сделать это в формате JPEG. Я успешно получаю эти данные в PNG. Но, как и ожидалось, не удалось в JPEG.
Я могу декодировать скрытые биты в записанном изображении и вижу сообщение, учитывая, что был выбран правильный LSB.
В настоящее время я читаю о стеганографии в формате JPEG, но не совсем понимаю, как мне начать. Я видел алгоритмы, мне тоже не помогли.
Я видел код, который не имеет каких-либо основных классов.
Должен ли я назвать это в моем заявлении? Изменить это? Как бы я расшифровал?
Вотссылка на код Я видел.