Стеганография при сжатии с потерями (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, но не совсем понимаю, как мне начать. Я видел алгоритмы, мне тоже не помогли.

Я видел код, который не имеет каких-либо основных классов.

Должен ли я назвать это в моем заявлении? Изменить это? Как бы я расшифровал?

Вотссылка на код Я видел.

Ответы на вопрос(1)

Ваш ответ на вопрос