【发布时间】:2018-09-13 06:50:11
【问题描述】:
我很难理解第 2 节中给出的LSB based steganography 方法。互联网上的示例非常混乱和不清楚。我正在关注 Matlab 实现 https://www.mathworks.com/matlabcentral/fileexchange/41326-steganography-using-lsb-substitution 和题为“使用 LSB 替代的图像隐写术的调查”的论文 TECHNIQUE》下载链接(https://irjet.net/archives/V4/i5/IRJET-V4I566.pdf)
本文的第 5 节给出了基于 LSB 的方法的示例。假设P1 = [10011011], P2 = [01101010], P3 = [11001100] 是要嵌入消息M = [011] 的封面图像的3 个字节。嵌入的结果是P1 = [10011010], P2 = [01101011],
P3 = [11001101]。
我不知道这个答案是怎么来的。有人可以帮忙给出步骤/工作示例来清除这个概念吗?
根据我对 Matlab 代码的理解,
Stego = uint8(round(bitor(bitand(x, bitcmp(2^n - 1, 8)) , bitshift(y, n - 8))));
如果n 是要替换的位数,则通过对封面图像的n 位组(x 变量)进行补码/比较来替换n 位组使用消息的n 位(y 变量)。如果位相同,则不替换,否则交换位。不知道我的理解对不对。
【问题讨论】:
-
这真的很简单。您从原始图像中的 3 个字节数据开始:P=[10011011, 01101010, 11001100]。这些字节的最低有效位是 1、0 和 0。在 LSB 隐写术中,这些最低有效位被替换为您要隐藏的信息,在本例中为 011。所以原来的3个字节变成了[10011010, 01101011, 11001101]。就是这样。
-
感谢您的评论。根据 Matlab 代码,命令
2^n会替换k = 2^nLSB 位吗?如果n = 4那么会有2^4组合并且第4个LSB会被替换吗?这是实际的算法。感谢您的帮助。
标签: algorithm matlab image-processing steganography