1

在此处输入图像描述

因此,正如您在左上角看到的那样,有变色。这违背了隐写术的目的。
我很确定这与我在图像中隐藏文本的方式有关。这是我的做法,使用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");
}  

我该怎么做才能让它隐藏得更好?

4

2 回答 2

5

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

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

于 2013-06-11T09:00:47.860 回答
5

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

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

而且当然:

  • 切勿同时保留包含秘密数据的图像和原始图像,否则人们可以通过比较两者来检测您的隐藏数据。
于 2013-06-11T09:00:54.077 回答