Java JPEG中的隐写术

Java JPEG中的隐写术,java,steganography,dct,Java,Steganography,Dct,我正在进行一个Java隐写术项目,以在JPEG图像中隐藏.txt消息。概括地说,有4个步骤: 将每个像素块转换为8x8 DCT系数 通过一些复杂的计算对每个块进行量化 将消息的每一位嵌入/替换到每个块的系数的LSB中 嵌入后,执行逆DCT以重新创建带有嵌入消息的JPEG图像 我被困在第三步,因为我不知道如何记录我在消息中更改的系数,以便将其提取出来 有谁能推荐我嵌入每个系数的方法,并记录每个嵌入,以便将其提取出来 我们将不胜感激 (我也知道1s和0s以及DC值应该单独考虑)。不清楚这一步有什么问

我正在进行一个Java隐写术项目,以在JPEG图像中隐藏.txt消息。概括地说,有4个步骤:

  • 将每个像素块转换为8x8 DCT系数
  • 通过一些复杂的计算对每个块进行量化
  • 将消息的每一位嵌入/替换到每个块的系数的LSB中
  • 嵌入后,执行逆DCT以重新创建带有嵌入消息的JPEG图像
  • 我被困在第三步,因为我不知道如何记录我在消息中更改的系数,以便将其提取出来

    有谁能推荐我嵌入每个系数的方法,并记录每个嵌入,以便将其提取出来

    我们将不胜感激


    (我也知道1s和0s以及DC值应该单独考虑)。

    不清楚这一步有什么问题。提取过程是嵌入过程的逆过程,并且假设该知识。例如,如果您将其安排为嵌入第3和第5个系数,则您可以在其中提取消息。这是可以做到的。我只是让它改变每个块的每个系数(不是1s、0s或DC),直到消息结束(没有更多的位要嵌入)。因此,当我试图提取每个系数的LSB时,它试图将所有位一起转换回ASCII(这似乎不正确)。加上你的想法,如果第三或第五个系数是1或0呢?我怎么能告诉它不要提取它,因为它是1或0?这就是我的问题。当然,在阅读任何LSB之前,你可以用if语句检查系数。如果是1或0,只需忽略它并继续。当然,这适用于嵌入和提取过程。