Я пытаюсь реализовать простую программу кодирования, где я могу скрыть сообщение в LSB пикселей изображения. До сих пор у меня есть массив байтов из сообщенияКак изменить LSB каждого пикселя в соответствии с моим сообщением
private static byte[] ConvertMessageToByte(String message,
byte[] messageBytes) {
// takes in the message and stores them into bytes
// returns message byte array
byte[] messageByteArray = message.getBytes();
return messageByteArray;
}
Я также получил массив байтов для соответствующего изображения, что я хочу, чтобы закодировать на
private static byte[] getPixelByteArray(BufferedImage bufferedImage) {
WritableRaster raster = bufferedImage.getRaster();
DataBufferByte buffer = (DataBufferByte) raster.getDataBuffer();
return buffer.getData();
}
До этого момента у меня нет я понимаю следующие шаги после этого. Проигрывать ли я через массив байтов изображения и сохранять значения ARGB в другом массиве байтов? Также как я должен применять значения бит сообщения к пикселям?
Спасибо, Scruffy за то, что он освободил меня. Я хочу спросить, почему вы использовали (rgb >> 8)% 256; для зеленого байта. Можете ли вы это прояснить? – Timhua
Для зеленого байта: сначала возьмем весь 3-байтовый int и сдвинем его на 8 мест. Байт находится в формате RGB, поэтому он удаляет 8 бит синего. '(rgb >> 8)' оставляет нам 16 бит (сумма (красный байт * 256) и (зеленый байт * 1)). Окончательная операция, беря модуль 256, удаляет что-либо большее, чем 1 байт, и возвращает последний байт (зеленый байт). См. Http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html для переключения битов и http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html для модуля (int% int). – Scruffy
Я реализовал функцию getColourAt() ', но я не могу понять, как изменить LSB в соответствии с моим сообщением. У меня есть функция, называемая 'getMessageBit()', которая выполняет итерацию через сообщение и выделяет значения бит с помощью цикла for for for (int i = 0; i> j) & 1'. Я просто наклоняю, кажется, склоняюсь к тому, чтобы применить их значения к значениям LSB моего массива RGB –
Timhua