隐写术出了问题

时间:2013-06-11 08:52:54

标签: java image-processing processing steganography

enter image description here

所以,正如你在左上角看到的那样,有变色。这违背了隐写术的目的 我很确定这与我在图像中隐藏文本的方式有关。我是这样做的,使用Processing

void hide(PImage payload,PImage carrier){
  if(payload.width > carrier.width){
   print("Carrier can not be smaller than payload");
   return; 
  }

  for(int x = 0; x < payload.width; x++){
   int payloadPixel = payload.pixels[x];
   int carrierPixel = carrier.pixels[x];

   carrierPixel = carrierPixel & 0xFFFFFF00;
   payloadPixel = payloadPixel & 0x000000FF;
   carrierPixel = carrierPixel | payloadPixel;

   carrier.pixels[x] = carrierPixel;  
  }
  carrier.updatePixels();
  carrier.save("newTulips.JPG");
}  

我可以做些什么来让它更好地隐藏?

2 个答案:

答案 0 :(得分:5)

进行隐写时,请不要使用有损压缩(如JPEG)。使用无损或未压缩的图像(如PNG)。

另请注意,使用隐写术意味着您必须仅使用最低位而不是完整字节来隐藏您的信息。如果您使用完整的颜色通道获取信息,您将在图像中获得此类工件。

答案 1 :(得分:5)

在我看来,这就是你应该做的:

  • 使用未经编辑的数码相机拍摄的图像。数码相机总是有一些背景噪音,可以隐藏你的人工噪音。原始图像噪点很小,易于检测。
  • 仅使用每种颜色的最后一位。这样,您的数据就变得更像噪音。当然,这意味着如果您有大量数据,则每个数据需要更多图像。
  • 在隐藏数据之前加密数据。这样,您可以防止明文中的图案在图像中变得可见。

当然:

  • 永远不要同时保存包含秘密数据的图像和原始图像,否则人们可以通过比较两者来检测您的隐藏数据。